Submission #1172188

#TimeUsernameProblemLanguageResultExecution timeMemory
1172188AtabayRajabliBigger segments (IZhO19_segments)C++20
37 / 100
0 ms784 KiB
#include <bits/stdc++.h> #define int long long #define all(v) v.begin(), v.end() using namespace std; const int sz = 3e3 + 1, inf = 1e18; int n, a[sz]; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; a[i] += a[i - 1]; } vector<array<int, 2>> dp(n + 1, {0, 0}); array<int, 2> cur = {0, 0}; for(int i = 1; i <= n; i++) dp[i] = {1, -a[i]}; for(int i = 1; i <= n; i++) { cur[1] -= a[i] - a[i - 1]; cur = max(cur, dp[i]); int l = i + 1, r = n; while(l <= r) { int m = (l + r) >> 1; if(a[m] - a[i] >= -cur[1]) { r = m - 1; } else { l = m + 1; } } int nxt = r + 1; if(i < nxt && nxt <= n) dp[nxt] = max(dp[nxt], {cur[0] + 1, -(a[nxt] - a[i])}); } cout << (*max_element(all(dp)))[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...