All pastes #2092625 Raw Edit

Something

public text v1 · immutable
#2092625 ·published 2011-10-22 20:33 UTC
rendered paste body
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <climits>
#include <cmath>

using namespace std;

struct Balle {
	int vitesse;
	int position;
	int numero;
};

struct Scenario {
	std::vector<Balle> balles;
	
	int trackedBall_i;	
	int temps;	
};

bool sortByPosition (Balle i, Balle j)
{ 
	if(i.position == j.position)
		return i.vitesse < j.vitesse;

	return (i.position<j.position);
}

void solve(Scenario& s) {

	sort(s.balles.begin(), s.balles.end(), sortByPosition);
	
	for(int i = 0; i < (int) s.balles.size(); ++i)
	{
		if(s.balles[i].position >= 100)
		{
			s.balles[i].vitesse = 0;
			s.balles[i].position = 100;
		}
		if(s.balles[i].position <= 0)
		{
			s.balles[i].vitesse = 0;
			s.balles[i].position = 0;
		}
	}

	int index = 0;	
	for(int i = 0; i < (int) s.balles.size(); ++i)
	{
		if(s.balles[i].numero == s.trackedBall_i)
		{
			index = i;
		}
	}

	for(int i = 0; i < (int) s.balles.size(); ++i)
	{
		s.balles[i].position += s.balles[i].vitesse * s.temps;

		if(s.balles[i].position >= 100)
		{
			s.balles[i].vitesse = 0;
			s.balles[i].position = 100;
		}
		if(s.balles[i].position <= 0)
		{
			s.balles[i].vitesse = 0;
			s.balles[i].position = 0;
		}
	}

	sort(s.balles.begin(), s.balles.end(), sortByPosition);

	cout << s.balles[index].position << endl;
}

int main() {
	int n;
	
	cin >> n;
	
	for (int i = 0; i < n; i++) {
		Scenario scenario;
		int nbBalles;
		
		cin >> nbBalles;
		
		for (int j = 0; j < nbBalles; j++) {
			Balle balle;
			
			cin >> balle.position >> balle.vitesse;
			balle.numero = j + 1;
			scenario.balles.push_back(balle);			
		}
		
		cin >> scenario.trackedBall_i >> scenario.temps;
		solve(scenario);
		cout << endl;
	}
	
	return 0;
}