#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define boost ios_base::sync_with_stdio(false);cin.tie(0);cout.precision(20);
#define inf 1000000007
#define INF 1000000000000000000LL
#define mod 1000000007
#define VI vector<int>
#define VPI vector < pair<int,int> >
#define PII pair<int, int>
#define st first
#define nd second
#define pb push_back
#define mp make_pair
#define endl '\n'
#define REP(x, y) for(int x = 0; x < (y); ++x)
#define FOR(x, y, z) for(int x = y; x <= (z); ++x)
#define FORR(x, y, z) for(int x = y; x >= (z); --x)
using namespace std;
#define int long long
#define N 1000007
VPI g;
int n,przyrost,ilejest,pom,pomm,v,v1;
int ans[N];
#undef int
int main()
{
#define int long long
boost
cin >> n;
FOR(i,1,n)
{
cin >> przyrost >> ilejest;
g.pb(mp(przyrost,ilejest));
}
sort(g.begin(),g.end());
//cout << endl;
//REP(i,g.size())
//cout << g[i].st << " " << g[i].nd << endl;
REP(i,g.size())
{
pom+=(g[i].nd+g[i].st*i);
}
ans[n]=pom;
//cout << endl;
FORR(i,n-1,1)
{
v=0;
pom=INF;
v1=0;
FORR(j,g.size()-1,0)
{
//if (i==3)
//cout << v+g[j].nd+j*g[j].st << " ";
if (pom>v+g[j].nd+j*g[j].st)
{
pom=v+g[j].nd+j*g[j].st;
v1=j;
}
v+=g[j].st;
//if (i==3)
//cout << pom << " " << v << endl;
}
ans[i]=ans[i+1]-pom;
g.erase(g.begin()+v1);
}
//cout << endl;
FOR(i,1,n)
cout << ans[i] << endl;
return 0;
}
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include<bits/stdc++.h> #define ll long long #define ld long double #define boost ios_base::sync_with_stdio(false);cin.tie(0);cout.precision(20); #define inf 1000000007 #define INF 1000000000000000000LL #define mod 1000000007 #define VI vector<int> #define VPI vector < pair<int,int> > #define PII pair<int, int> #define st first #define nd second #define pb push_back #define mp make_pair #define endl '\n' #define REP(x, y) for(int x = 0; x < (y); ++x) #define FOR(x, y, z) for(int x = y; x <= (z); ++x) #define FORR(x, y, z) for(int x = y; x >= (z); --x) using namespace std; #define int long long #define N 1000007 VPI g; int n,przyrost,ilejest,pom,pomm,v,v1; int ans[N]; #undef int int main() { #define int long long boost cin >> n; FOR(i,1,n) { cin >> przyrost >> ilejest; g.pb(mp(przyrost,ilejest)); } sort(g.begin(),g.end()); //cout << endl; //REP(i,g.size()) //cout << g[i].st << " " << g[i].nd << endl; REP(i,g.size()) { pom+=(g[i].nd+g[i].st*i); } ans[n]=pom; //cout << endl; FORR(i,n-1,1) { v=0; pom=INF; v1=0; FORR(j,g.size()-1,0) { //if (i==3) //cout << v+g[j].nd+j*g[j].st << " "; if (pom>v+g[j].nd+j*g[j].st) { pom=v+g[j].nd+j*g[j].st; v1=j; } v+=g[j].st; //if (i==3) //cout << pom << " " << v << endl; } ans[i]=ans[i+1]-pom; g.erase(g.begin()+v1); } //cout << endl; FOR(i,1,n) cout << ans[i] << endl; return 0; } |
English