#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6+77; ll dp[2][N]; pair<int,int> X[N]; int main () { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; for(int i=0;i<n;i++) cin >> X[i].first >> X[i].second; sort(X, X+n); int akt = 1; for(int i=0;i<n;i++) { for(int j=1;j<=i+1;j++) dp[akt][j] = max(dp[akt^1][j], dp[akt^1][j-1] + (j-1)*X[i].first + X[i].second); akt ^= 1; } for(int i=1;i<=n;i++) cout << dp[akt^1][i] << "\n"; }
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 | #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6+77; ll dp[2][N]; pair<int,int> X[N]; int main () { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; for(int i=0;i<n;i++) cin >> X[i].first >> X[i].second; sort(X, X+n); int akt = 1; for(int i=0;i<n;i++) { for(int j=1;j<=i+1;j++) dp[akt][j] = max(dp[akt^1][j], dp[akt^1][j-1] + (j-1)*X[i].first + X[i].second); akt ^= 1; } for(int i=1;i<=n;i++) cout << dp[akt^1][i] << "\n"; } |