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...