Submission #583678

#TimeUsernameProblemLanguageResultExecution timeMemory
583678KoDBigger segments (IZhO19_segments)C++17
100 / 100
91 ms16900 KiB
#include <bits/stdc++.h> using ll = long long; using std::vector; using std::pair; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int n; std::cin >> n; vector<ll> sum(n + 1); for (int i = 0; i < n; ++i) { std::cin >> sum[i + 1]; sum[i + 1] += sum[i]; } vector<pair<int, ll>> dp(n + 1); dp[1] = {1, 0}; for (int i = 1; i <= n; ++i) { dp[i] = std::max(dp[i], dp[i - 1]); const ll last = sum[i] - dp[i].second; const int pos = std::lower_bound(sum.begin(), sum.end(), sum[i] + last) - sum.begin(); if (pos <= n) { dp[pos] = std::max(dp[pos], pair(dp[i].first + 1, sum[i])); } } std::cout << dp[n].first << '\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...