和这道题类似,有一点点的不同,但是思路一样,这里不再写了。
有一点小坑,就是输入的重要性和时间可以为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; }