# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1083218 | 2024-09-02T18:27:56 Z | kiethm07 | Split the sequence (APIO14_sequence) | C++11 | 56 ms | 131072 KB |
#include <bits/stdc++.h> #define pii pair<int,int> #define iii pair<int,pii> #define fi first #define se second #define vi vector<int> #define vii vector<pii> #define pb(i) push_back(i) #define all(x) x.begin(),x.end() #define TEXT "a" using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; const int inf = 1e9 + 7; const ld eps = 1e-8; const double pi = acos(-1); const int N = 1e5 + 5; const int K = 205; int n,k; ll p[N]; ll dp[N][K]; int pre[N][K]; struct line{ ll a,b; int id; line(ll _a, ll _b, int _id){ a = _a; b = _b; id = _id; } ll eval(ll x){ return a * x + b; } double isect(const line& F) const{ return 1.0 * (F.b - b) / (a - F.a); } }; struct CHT{ deque<line> dq; void add(line F){ int n = dq.size(); while(n >= 2 && dq[n - 2].isect(dq[n - 1]) >= F.isect(dq[n - 1])){ n--; dq.pop_back(); } dq.push_back(F); } pair<ll,ll> query(ll x){ int n = dq.size(); while(n >= 2 && dq[0].eval(x) <= dq[1].eval(x)){ n--; dq.pop_front(); } return make_pair(dq[0].eval(x),dq[0].id); } }; int main(){ cin.tie(0) -> sync_with_stdio(0); if (fopen(TEXT".inp","r")){ freopen(TEXT".inp","r",stdin); freopen(TEXT".out","w",stdout); } cin >> n >> k; for (int i = 1; i <= n; i++){ cin >> p[i]; p[i] += p[i - 1]; } for (int used = 1; used <= k; used++){ CHT c; c.add(line(0,0,0)); for (int i = 1; i < n; i++){ // for (int j = 0; j < i; j++){ // dp[i][used] = max(dp[i][used], dp[j][used - 1] + (p[i] - p[j]) * (p[n] - p[i])); // if (dp[i][used] == dp[j][used - 1] + (p[i] - p[j]) * (p[n] - p[i])) pre[i][used] = j; // } auto tmp = c.query(-(p[n] - p[i])); dp[i][used] = p[i] * (p[n] - p[i]) + tmp.fi; pre[i][used] = tmp.se; c.add(line(p[i], dp[i][used - 1], i)); } } int best = 0; for (int i = 1; i < n; i++){ if (dp[i][k] >= dp[best][k]) best = i; } cout << dp[best][k] << "\n"; vector<int> v; for (int used = k; used >= 1; used--){ v.push_back(best); best = pre[best][used]; } reverse(all(v)); for (int i : v){ if (i == 0) cout << "LMAO\n"; cout << i << " "; } return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 108 == 108 |
2 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 999 == 999 |
3 | Correct | 0 ms | 344 KB | contestant found the optimal answer: 0 == 0 |
4 | Correct | 1 ms | 348 KB | contestant found the optimal answer: 1542524 == 1542524 |
5 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 4500000000 == 4500000000 |
6 | Correct | 1 ms | 348 KB | contestant found the optimal answer: 1 == 1 |
7 | Correct | 0 ms | 360 KB | contestant found the optimal answer: 1 == 1 |
8 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 1 == 1 |
9 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 100400096 == 100400096 |
10 | Correct | 1 ms | 344 KB | contestant found the optimal answer: 900320000 == 900320000 |
11 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 3698080248 == 3698080248 |
12 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 3200320000 == 3200320000 |
13 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 140072 == 140072 |
14 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 376041456 == 376041456 |
15 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 805 == 805 |
16 | Correct | 0 ms | 344 KB | contestant found the optimal answer: 900189994 == 900189994 |
17 | Correct | 1 ms | 344 KB | contestant found the optimal answer: 999919994 == 999919994 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 600 KB | contestant found the optimal answer: 1093956 == 1093956 |
2 | Correct | 1 ms | 348 KB | contestant found the optimal answer: 302460000 == 302460000 |
3 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 122453454361 == 122453454361 |
4 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 93663683509 == 93663683509 |
5 | Correct | 1 ms | 348 KB | contestant found the optimal answer: 1005304678 == 1005304678 |
6 | Correct | 1 ms | 348 KB | contestant found the optimal answer: 933702 == 933702 |
7 | Correct | 1 ms | 348 KB | contestant found the optimal answer: 25082842857 == 25082842857 |
8 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 687136 == 687136 |
9 | Correct | 0 ms | 348 KB | contestant found the optimal answer: 27295930079 == 27295930079 |
10 | Correct | 0 ms | 344 KB | contestant found the optimal answer: 29000419931 == 29000419931 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 856 KB | contestant found the optimal answer: 610590000 == 610590000 |
2 | Correct | 1 ms | 860 KB | contestant found the optimal answer: 311760000 == 311760000 |
3 | Correct | 2 ms | 860 KB | contestant found the optimal answer: 1989216017013 == 1989216017013 |
4 | Correct | 1 ms | 860 KB | contestant found the optimal answer: 1499437552673 == 1499437552673 |
5 | Correct | 1 ms | 860 KB | contestant found the optimal answer: 1019625819 == 1019625819 |
6 | Correct | 2 ms | 856 KB | contestant found the optimal answer: 107630884 == 107630884 |
7 | Correct | 1 ms | 860 KB | contestant found the optimal answer: 475357671774 == 475357671774 |
8 | Correct | 1 ms | 860 KB | contestant found the optimal answer: 193556962 == 193556962 |
9 | Correct | 1 ms | 860 KB | contestant found the optimal answer: 482389919803 == 482389919803 |
10 | Correct | 1 ms | 860 KB | contestant found the optimal answer: 490686959791 == 490686959791 |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 4188 KB | contestant found the optimal answer: 21503404 == 21503404 |
2 | Correct | 2 ms | 4184 KB | contestant found the optimal answer: 140412195 == 140412195 |
3 | Correct | 6 ms | 4188 KB | contestant found the optimal answer: 49729674225461 == 49729674225461 |
4 | Correct | 1 ms | 4188 KB | contestant found the optimal answer: 37485571387523 == 37485571387523 |
5 | Correct | 7 ms | 4184 KB | contestant found the optimal answer: 679388326 == 679388326 |
6 | Incorrect | 5 ms | 4316 KB | contestant didn't find the optimal answer: 4699030135 < 4699030287 |
7 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 24924 KB | contestant found the optimal answer: 1818678304 == 1818678304 |
2 | Correct | 8 ms | 25180 KB | contestant found the optimal answer: 1326260195 == 1326260195 |
3 | Correct | 56 ms | 25076 KB | contestant found the optimal answer: 4973126687469639 == 4973126687469639 |
4 | Correct | 9 ms | 24928 KB | contestant found the optimal answer: 3748491676694116 == 3748491676694116 |
5 | Correct | 42 ms | 25180 KB | contestant found the optimal answer: 1085432199 == 1085432199 |
6 | Incorrect | 48 ms | 24924 KB | contestant didn't find the optimal answer: 514786325281 < 514790755404 |
7 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 46 ms | 131072 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |