1 #include <iostream>
2 #include <cstring>
3 #include <cstdio>
4 #include <algorithm>
5
6 using namespace std;
7
8 #define maxn 100005
9
10 struct blo
11 {
12 int w;
13 int d;
14 }block[maxn];
15
16 bool cmp(const blo&a,const blo&b)
17 {
18 return a.w+a.d<b.w+b.d;
19 }
20
21 int main()
22 {
23 int n;
24 while(scanf("%d",&n) != EOF)
25 {
26 for(int i=0;i<n;i++)
27 scanf("%d%d",&block[i].w,&block[i].d);
28 sort(block,block+n,cmp);
29 __int64 sum=block[0].w;
30 __int64 ans=0;
31 for(int i=1;i<n;i++)
32 {
33 __int64 tmp = sum - block[i].d;
34 if(tmp>ans)
35 ans=tmp;
36 sum+=block[i].w;
37 }
38 printf("%I64d\n",ans);
39 }
40 return 0;
41
42 }
悲剧的孩子啊,,,比赛的时候把题意搞错了,,其实是使得最大的PDV尽可能地小,想想常理也该这样的,我们竟然求和了。以为是和最少。o(︶︿︶)o 唉。
来源:https://www.cnblogs.com/Missa/archive/2012/09/21/2696732.html