3
ans=max∑(ai-k*bi) 0=<k<=n
//#include<bits/stdc++.h> #include<iostream> #include<cmath> #include<cstring> #include<string> #include<cstdlib> #include<cstdio> #include<map> #include<algorithm> using namespace std; const int maxn=100011; const int inf=999999999; #define lson (rt<<1),L,M #define rson (rt<<1|1),M+1,R #define M ((L+R)>>1) #define For(i,n) for(int i=0;i<(n);i++) template<class T>inline T read(T&x) { char c; while((c=getchar())<=32); bool ok=false; if(c=='-')ok=true,c=getchar(); for(x=0; c>32; c=getchar()) x=x*10+c-'0'; if(ok)x=-x; return x; } template<class T> inline void read_(T&x,T&y) { read(x); read(y); } template<class T> inline void read__(T&x,T&y,T&z) { read(x); read(y); read(z); } template<class T> inline void write(T x) { if(x<0)putchar('-'),x=-x; if(x<10)putchar(x+'0'); else write(x/10),putchar(x%10+'0'); } template<class T>inline void writeln(T x) { write(x); putchar('\n'); } //-------IO template------ typedef long long LL; struct node { int ai,bi; }p[maxn]; int cnt=0; bool cmp(node a,node b) { return (a.ai-a.bi*cnt)>(b.ai-b.bi*cnt); } int main() { int n,m,i,j,k,t; while(read(n)) { For(i,n)read_(p[i].ai,p[i].bi); int ans=0; int tmp=0; for(cnt=1;cnt<=n;cnt++) { sort(p,p+n,cmp); For(j,cnt) { tmp+=p[j].ai-p[j].bi*cnt; } ans=max(ans,tmp); tmp=0; } writeln(ans); } return 0; }