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
#include<iostream>
#include<algorithm>
using namespace std;
const unsigned long long inf=(((unsigned long long)1<<63)-1)*2+1;
unsigned long long tab[1000005];
pair<unsigned long long,unsigned long long> sortowanie[1000005];
unsigned long long wyn[1000005];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    //cerr<<inf;
    int n;cin>>n;
    for(int i=0;i<n;i++){
        unsigned long long a,b;
        cin>>a>>b;
        sortowanie[i]=make_pair(a,b);
    }
    sort(sortowanie,sortowanie+n);
    unsigned long long suma_dniowek=0;
    for(int i=n-1;i>=0;i--){
        tab[i]=(sortowanie[i].first)*i+sortowanie[i].second+suma_dniowek;
        wyn[n]+=(sortowanie[i].first)*i+sortowanie[i].second;
        suma_dniowek+=sortowanie[i].first;
    }

    for(int i=n-1;i>0;i--){//cerr<<i<<" ";
        unsigned long long minn=inf;
        int gdzie=-1;
        for(int j=0;j<n;j++){
            if(tab[j]<minn){minn=tab[j];gdzie=j;}
        }
        wyn[i]=wyn[i+1]-minn;
        tab[gdzie]=inf;
        for(int j=0;j<gdzie;j++){
            tab[j]-=sortowanie[gdzie].first;
        }
        for(int j=gdzie+1;j<n;j++){
            tab[j]-=sortowanie[j].first;
        }
    }
    for(int i=1;i<=n;i++){cout<<wyn[i]<<"\n";}
}