和这道题类似,有一点点的不同,但是思路一样,这里不再写了。
有一点小坑,就是输入的重要性和时间可以为0,这种数据会对sort函数产生影响,所以在输入时,需要处理一下这种数据。
AC代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct cow{
long long time;
long long eat;
};
bool cmp(cow a, cow b)
{
return a.eat*b.time > b.eat*a.time ;
}
int main()
{
long long n,sum=0,time=0;
cin >> n ;
cow a[n+10];
for(int i=0;i<n;i++)
{
cin >> a[i].time >> a[i].eat ;
if(a[i].eat==0||a[i].time==0){
i--;
n--;
}
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
time+=a[i].time;
sum+=a[i].eat*time;
//time+=a[i].time;
}
cout << sum << endl ;
return 0;
}