提交时间:2024-03-02 18:36:58

运行 ID: 134794

#include<bits/stdc++.h> using namespace std; const int MAXN=25005; int n,x,y; int lena,lenb,sum1,sum2; struct node { int l,r; }a[MAXN],b[MAXN]; bool cmp1(node x,node y) { return x.r<y.r; } bool cmp2(node x,node y) { return x.l<y.l; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>x>>y; if(x<y) { a[++lena].r=x; a[lena].l=y; } else { b[++lenb].r=x; b[lenb].l=y; } } sort(a+1,a+lena+1,cmp1); sort(b+1,b+lenb+1,cmp2); for(int i=1;i<=n;i++) { if(i<=lena) { sum1+=a[i].r; if(sum2<sum1)sum2=sum1; sum2+=a[i].l; } else { sum1+=b[i-lena].r; if(sum2<sum1)sum2=sum1; sum2+=b[i-lena].l; } } cout<<sum2<<endl; return 0; }