比赛 ry分享赛 评测结果 AAAAAAAAAA
题目名称 服务 最终得分 100
用户昵称 彭欣越 运行时间 0.140 s
代码语言 C++ 内存使用 3.78 MiB
提交时间 2026-03-19 19:48:01
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=25010;
int n,sum1,sum2,ans=1e9+10;
struct node {
	int a,b;
}s[N];
bool cmp1 (node x,node y) {
	return x.a-x.b<y.a-y.b;
}
bool cmp2 (node x,node y) {
	return x.a<y.a;
} 
bool cmp3 (node x,node y) {
	return x.b<y.b;
}
bool cmp4 (node x,node y) {
	return x.a-x.b>y.a-y.b;
}
bool cmp5 (node x,node y) {
	return x.a>y.a;
} 
bool cmp6 (node x,node y) {
	return x.b>y.b;
} 
int main () {
	freopen("service.in","r",stdin);
	freopen("service.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin >> n;
    for (int i=1;i<=n;i++) {
    	cin >> s[i].a >> s[i].b;
	}
	sort(s+1,s+1+n,cmp1);
    for (int i=1;i<=n;i++) {
    	sum1+=s[i].a;
    	if (sum1>sum2) {
    		sum2=sum1;
    		sum2+=s[i].b;
		}else{
			sum2+=s[i].b;
		}
	}
	ans=min(ans,max(sum1,sum2));
	sum1=sum2=0;
	sort(s+1,s+1+n,cmp2);
    for (int i=1;i<=n;i++) {
    	sum1+=s[i].a;
    	if (sum1>sum2) {
    		sum2=sum1;
    		sum2+=s[i].b;
		}else{
			sum2+=s[i].b;
		}
	}
	ans=min(ans,max(sum1,sum2));
	sum1=sum2=0;
	sort(s+1,s+1+n,cmp3);
    for (int i=1;i<=n;i++) {
    	sum1+=s[i].a;
    	if (sum1>sum2) {
    		sum2=sum1;
    		sum2+=s[i].b;
		}else{
			sum2+=s[i].b;
		}
	}
	ans=min(ans,max(sum1,sum2));
	sum1=sum2=0;
	sort(s+1,s+1+n,cmp4);
    for (int i=1;i<=n;i++) {
    	sum1+=s[i].a;
    	if (sum1>sum2) {
    		sum2=sum1;
    		sum2+=s[i].b;
		}else{
			sum2+=s[i].b;
		}
	}
	ans=min(ans,max(sum1,sum2));
	sum1=sum2=0;
	sort(s+1,s+1+n,cmp5);
    for (int i=1;i<=n;i++) {
    	sum1+=s[i].a;
    	if (sum1>sum2) {
    		sum2=sum1;
    		sum2+=s[i].b;
		}else{
			sum2+=s[i].b;
		}
	}
	ans=min(ans,max(sum1,sum2));
	sum1=sum2=0;
	sort(s+1,s+1+n,cmp6);
    for (int i=1;i<=n;i++) {
    	sum1+=s[i].a;
    	if (sum1>sum2) {
    		sum2=sum1;
    		sum2+=s[i].b;
		}else{
			sum2+=s[i].b;
		}
	}
	ans=min(ans,max(sum1,sum2));
	cout << ans <<endl;
	return 0;
}