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;
}