处女座的训练
处女座的训练
http://www.nowcoder.com/questionTerminal/2c9044357e584b9a8656ddc771770ca6
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #define ll long long using namespace std; const int maxn=1e5+100; typedef struct p { ll a,b; }p; p x[maxn]; bool cmp(p &a,p &b) { return b.b*a.a<a.b*b.a; //结构体排序 } int main(void) { int n; // freopen("in.txt","r",stdin); scanf("%d",&n); ll ans=0;用long long是因为做乘法运算时会溢出int for(int i=0;i<n;i++) { scanf("%lld%lld",&x[i].a,&x[i].b); ans+=x[i].b; //得到所有的疲劳值 } sort(x,x+n,cmp); ll sum=0; for(int i=0;i<n;i++) { ans-=x[i].b; sum+=ans*x[i].a; } printf("%lld\n",sum); return 0; }