求反例
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
const int N=5e6+50;
int a[N],b[N];
int c[N];
int n;
long long sum1,sum2;
struct node {
int a,b;
}f[N];
bool cmp1(node q,node p) {
return q.b>p.b;
}
bool cmp2(node q,node p) {
return q.a<p.a;
}
bool o;
int main() {
cin>>n;
if (n&1) o=1;
else o=0;
for (int i=1;i<=n;i++) {
int x,y;
cin>>x>>y;
if (x<y) f[i].a=x,f[i].b=y;
else f[i].a=y,f[i].b=x;
}
// for (int i=1;i<=n;i++) {
// cout<<f[i].a<<' ';
// }
// cout<<endl;
// for (int i=1;i<=n;i++) {
// cout<<f[i].b<<' ';
// }
sort(f+1,f+1+n,cmp1);
// for (int i=1;i<=n;i++)
// cout<<f[i].a<<' ';
// cout<<endl;
// for (int i=1;i<=n;i++)
// cout<<f[i].b<<' ';
// cout<<endl;
for (int i=1;i<=n;i++) {
if (i<=n/2+o) sum1-=f[i].b;
else sum1+=f[i].a;
}
sort(f+1,f+1+n,cmp2);
// for (int i=1;i<=n;i++)
// cout<<f[i].a<<' ';
// cout<<endl;
// for (int i=1;i<=n;i++)
// cout<<f[i].b<<' ';
// cout<<endl;
for (int i=1;i<=n;i++) {
if (i<=n/2+o) sum2+=f[i].a;
else sum2-=f[i].b;
}
cout<<min(sum1,sum2);
return 0;
}