【题目】
【..】
由于当前正在写的那一题并不会给他带来任何疲劳,因此我们可以按做题时每分钟可以省掉的精力降序排序,优先把每分钟可省下较多精力的题做掉。
【代码】
const int maxn=1e5+5;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
struct p{
int a,b;
}f[maxn];
bool cmp(p x,p y)
{
return (double)x.b/x.a>(double)y.b/y.a;
}
int main()
{
int n; scanf("%d",&n);
int sum=0;
for(int i=0;i<n;i++) scanf("%d%d",&f[i].a,&f[i].b),sum+=f[i].b;
sort(f,f+n,cmp);
ll ans=0;
for(int i=0;i<n-1;i++)
{
//printf("%d %d\n",f[i].a,f[i].b);
sum-=f[i].b;
ans+=(ll)sum*f[i].a;
}
printf("%lld\n",ans);
return 0;
}