/*题目背景
Farmer John 养了N(1<=N<=50,000)头牛,她们已经按1~N依次编上了号。FJ所不知道的是,他的所有牛都梦想着从农场逃走,去参加马戏团的演出。可奶牛们很快发现她们那笨拙的蹄子根本无法在钢丝或晃动的的秋千上站稳(她们还尝试过把自己装在大炮里发射出去,但可想而知,结果是悲惨的) 。最终,她们决定练习一种最简单的杂技:把所有牛都摞在一起, 比如说, 第一头牛站在第二头的身上, 同时第二头牛又站在第三头牛的身上...最底下的是第 N头牛。
题目描述
每头牛都有自己的体重以及力量,编号为 i 的奶牛的体重为
W_i(1<=W_i<=10,000),力量为 S_i(1<=S_i<=1,000,000,000)。
当某头牛身上站着另一些牛时它就会在一定程度上被压扁,我们不妨把它被压扁的程度叫做它的压扁指数。对于任意的牛,她的压扁指数等于摞在她上面的所有奶牛的总重(当然不包括她自己)减去它的力量。奶牛们按照一定的顺序摞在一起后, 她们的总压扁指数就是被压得最扁的那头奶牛的压扁指数。
你的任务就是帮助奶牛们找出一个摞在一起的顺序,使得总压扁指数最小。
输入格式:
第一行:N
接下来N行,每行两个数:Wi和Si
输出格式:
最小总压扁指数
输入样例#1:
3
10 3
2 5
3 3
输出样例#1:
2
对于 100% 的数据,1≤N≤500000 1≤Wi≤10000 1≤Si ≤1000000000*/
#include <iostream>
#include <climits>
#include <limits.h>
#include <algorithm>
using namespace std;
struct cows{
int w,s;
};
bool cmp(cows a,cows b){
a.s+a.w<b.s+b.w;
}
int main(){
int n;
cin>>n;
cows co[500005];
int ans=INT_MIN;
for (int i=1;i<=n;i++){
cin>>co[i].w>>co[i].s;
}
sort(co+1,co+n+1,cmp);
int t=co[1].w;
int tmp;
for (int i=2;i<=n;i++){
tmp=t-co[i].s;
if (tmp>ans){
ans=tmp;
}
t+=co[i].w;
}
cout<<ans;
return 0;
}
无法输入
可以尝试将col数组的定义放main函数外面,因为main函数里的数组有栈空间限制,如果数组较大,最好放在main函数外面