有点小坑,每次拉牛会棚,其他牛会在这段时间内继续吃花,但是被选中的牛不会,所以剩下的就是总每分钟消耗的花的减掉当前的牛每分钟消耗的花的数量((sum-a[i])*t),排序的时候稍微注意一下排序的条件。
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int l;
int w;
};
bool cmp(node a,node b)
{
return a.l*b.w<b.l*a.w;
}
node a[100010];
int main()
{
int n;
cin>>n;
long long sum=0;
for(int i=0;i<n;i++)
{
cin>>a[i].l>>a[i].w;
sum+=a[i].w;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
cout<<a[i].l<<" "<<a[i].w<<endl;
}
long long t;
long long ans=0;
for(int i=0;i<n;i++)
{
t=2*a[i].l;
sum-=a[i].w;
ans+=sum*t;
}
cout<<ans<<endl;
return 0;
}