3 10 3 2 5 3 3
2
Hint
样例解释: 把重量为10的牛放在底部。她将携带另外两只牛,所以她的崩溃的风险是2 +3-3= 2。其他的奶牛有比她低的崩溃风险。
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
#define MAX 50000
struct Cow
{
int weight, strength;
bool operator<(const Cow& other)const
{
//return other.weight<weight;
return other.strength+other.weight<strength+weight;
}
}cow[MAX];
int main()
{
int N;
while(cin>>N)
{
int total = 0;
for (int i=0;i<N;++i)
{
scanf("%d%d",&cow[i].weight,&cow[i].strength);
total+= cow[i].weight;
}
sort(cow,cow+N);
int risk = 0x80808080;
for(int i=0; i<N;++i)
{
total-=cow[i].weight; // 减去自己的重量
risk=max(risk,total-cow[i].strength); // 计算risk
}
cout <<risk<<endl;
}
return 0;
}