题目描述
FJ的N(1≤N≤50000)头奶牛计划逃跑去参加马戏团。她们参加的杂技是叠罗汉,她们正在讨论如何安排自己的位置。
每头奶牛都有一个体重值Wi(1≤Wi≤10000)和一个力量值Si(1≤Si≤10^9),每头奶牛的风险值等于她头上所有其他奶牛的总重量减去她的力量值,你的任务是确定奶牛的排序从而使得最大风险的牛的风险值尽可能小。(注意风险值可能是负数)
输入格式
第一行一个整数N,表示奶牛的数量
接下来N行,每行两个整数分别表示第i头奶牛的Wi和Si
输出格式
一个整数,输出风险值最大的奶牛的最小风险值
输入输出样例
输入样例1:
3
10 3
2 5
3 3
输出样例1:
2
【耗时限制】1000ms 【内存限制】128MB
//
//Created by Carlgood.
//
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<sstream>
using namespace std;
struct cow
{
int w,s;
}a[50010];
bool cmp(const cow &x,const cow &y)
{
return x.w-y.s<y.w-x.s;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].w>>a[i].s;
}
sort(a+1,a+n+1,cmp);
int maxn=-1E9,sum=0;
for(int i=1;i<=n;i++)
{
int t=sum-a[i].s;
maxn=max(maxn,t);
sum+=a[i].w;
}
cout<<maxn;
return 0;
}