cpp
#include <iostream>
#include <algorithm>
using namespace std;
int T;
int n;
long long res;
struct Person
{
int a,b,d;
}p[20005];
bool person_cmp(const Person& x,const Person& y)
{
if(x.d == y.d)
{
if(x.d < 0)
return x.a < y.a;
else if(x.d == 1)
return x.b > y.b;
else
return x.a < y.a;//很奇怪,这里按照题解说法随便排则会出问题,写true会RE两个然后一个超时,写false和这里这个写法就能AC
}
else
return x.d < y.d;
}
void queenGame()
{
res = 0;
scanf("%d",&n);
for(int k = 0 ; k < n ; k++)
{
scanf("%d%d",&p[k].a,&p[k].b);
p[k].d = p[k].a - p[k].b;
if(p[k].d > 0) p[k].d = 1;
else if(p[k].d < 0) p[k].d = -1;
}
sort(p,p+n,person_cmp);
long long sum_a = 0;
for(int k = 0 ; k < n ; k++)
{
sum_a += p[k].a;
res = max(res,sum_a)+p[k].b;
}
printf("%lld\n",res);
}
int main()
{
scanf("%d",&T);
while(T > 0)
{
T--;
queenGame();
}
}