题目链接:http://poj.org/problem?id=3045
题意:n头牛叠罗汉,给出每头牛的重量和强度,算最小的风险(每头牛的叠罗汉风险risk=sum(该牛上面的所有牛的体重)-s(该牛的强度) )
AC代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
#define ll __int64
struct node
{
int w,s;
bool operator < (const node &x) const{
return w+s<x.w+x.s;
}
}cow[50005];
int main(){
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&cow[i].w,&cow[i].s);
sort(cow,cow+n);
ll ans=-cow[0].s;
ll sum=cow[0].w;
for(i=1;i<n;i++){
if(ans<sum-cow[i].s)
ans=sum-cow[i].s;
sum+=cow[i].w;
}
printf("%I64d\n",ans);
return 0;
}