分析
利用 融化速度/搬运时间 比值进行排序,将比值高的先搬运
#include <bits/stdc++.h>
using namespace std;
typedef struct ice{
int t,d;
}ice;
typedef long long ll;
ice a[100010];
bool cmp(ice x,ice y)
{
return (double)x.d/(double)x.t>(double)y.d/(double)y.t;
}
int main ()
{
int n;
cin>>n;
for (int i=1;i<=n;i++){
scanf ("%d%d",&a[i].t,&a[i].d);
}
sort(a+1,a+1+n,cmp);
int sumt=0;
ll sum=0;
for (int i=1;i<=n;i++){
sum+=(ll)sumt*(ll)a[i].d;
sumt+=(ll)a[i].t;
}
cout<<sum;
return 0;
}