应该是一道陈题了吧 见到好多次了
下个blog记一下
做法跟上一题差不多 比较相邻两个 而且这个式子更简单 Sx-wy>=Sy-Wx (x放下面更优)
Code:(快又短√)
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
inline int read()
{
char ch=getchar(); int x=0,f=1;
while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
struct node{int x,y;}a[50005];
int Cmp(node x1,node x2){return x1.x+x1.y>x2.x+x2.y;}
int main()
{
int i,n=read();
for(i=1;i<=n;i++)a[i].x=read(),a[i].y=read();
sort(a+1,a+1+n,Cmp);
int s=a[n].x,ans=-a[n].y;
for(i=n-1;i>0;i--)
{
ans=max(ans,s-a[i].y);
s+=a[i].x;
}
printf("%d\n",ans);
return 0;
}