Submission #1266982

#TimeUsernameProblemLanguageResultExecution timeMemory
1266982kawhietBigger segments (IZhO19_segments)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector<int> a(n + 1); for (int i = 1; i <= n; i++ ) { cin >> a[i]; } vector<int64_t> p(n + 1); for (int i = 1; i <= n; i++) { p[i] = p[i - 1] + a[i]; } vector<array<int64_t, 2>> dp(n + 1); dp[1] = {1, a[1]}; for (int i = 1; i <= n; i++) { int l = i, r = n + 1; while (l + 1 < r) { int m = (l + r) / 2; if (p[m] - p[i] >= dp[i][1]) { r = m; } else { l = m; } } if (r != n + 1) { if (dp[i][0] + 1 > dp[r][0]) { dp[r][0] = dp[i][0] + 1; dp[r][1] = p[r] - p[i]; } else if (dp[i][0] + 1 == dp[r][0]) { dp[r][1] = min(dp[r][1], p[r] - p[i]); } } } int64_t res = 0; for (int i = 1; i <= n; i++) { res = max(res, dp[i][0]); } cout << res << '\n'; return 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...