#include <cstdio>
#include <algorithm>
#define MAKS 1000010
using namespace std;
typedef long long int lld;
struct polana
{
    lld a;
    lld b;
};
polana wej[MAKS];
lld wyn[MAKS];
int kol[MAKS];
bool cmp(const polana& i, const polana& j)
{
    if(i.a!=j.a)return i.a < j.a;
    return i.b < j.b;
}
lld f[2][MAKS];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)scanf("%lld %lld",&(wej[i].a),&(wej[i].b));
    
    sort(wej,wej+n,cmp);
    for(int i=0;i<n;i++)
    {
        f[0][i]=wej[i].b;
        if(f[0][i]>wyn[1])wyn[1]=f[0][i];
    }
    int akt=1;
    for(int k=2;k<=n;k++)
    {
        lld maks=-1;
        for(int i=0;i<n;i++)
        {
            if(maks!=-1)f[akt][i]=wej[i].b + lld(k-1)*wej[i].a + maks;
            else f[akt][i]=-1;
            if(f[akt][i]>wyn[k])wyn[k]=f[akt][i];
            
            if(f[1-akt][i]>maks)maks=f[1-akt][i];
        }
        
        akt=1-akt;
    }
        
    for(int i=1;i<=n;i++)printf("%lld\n",wyn[i]);
}
        | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <cstdio> #include <algorithm> #define MAKS 1000010 using namespace std; typedef long long int lld; struct polana { lld a; lld b; }; polana wej[MAKS]; lld wyn[MAKS]; int kol[MAKS]; bool cmp(const polana& i, const polana& j) { if(i.a!=j.a)return i.a < j.a; return i.b < j.b; } lld f[2][MAKS]; int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++)scanf("%lld %lld",&(wej[i].a),&(wej[i].b)); sort(wej,wej+n,cmp); for(int i=0;i<n;i++) { f[0][i]=wej[i].b; if(f[0][i]>wyn[1])wyn[1]=f[0][i]; } int akt=1; for(int k=2;k<=n;k++) { lld maks=-1; for(int i=0;i<n;i++) { if(maks!=-1)f[akt][i]=wej[i].b + lld(k-1)*wej[i].a + maks; else f[akt][i]=-1; if(f[akt][i]>wyn[k])wyn[k]=f[akt][i]; if(f[1-akt][i]>maks)maks=f[1-akt][i]; } akt=1-akt; } for(int i=1;i<=n;i++)printf("%lld\n",wyn[i]); } | 
 
            
         English
                    English