Submission #1133826

#TimeUsernameProblemLanguageResultExecution timeMemory
1133826lopkusBigger segments (IZhO19_segments)C++20
37 / 100
1593 ms2632 KiB
#include <bits/stdc++.h>

#define int long long

using namespace std;

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;
    vector<int> a(n + 1);
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    vector<int> dp(n + 1);
    vector<int> e(n + 1);
    e[0] = 0;
    dp[0] = 0;
    for(int i = 1; i <= n; i++) {
        int sum = 0;
        int mx = 0;
        for(int j = i; j >= 1; j--) {
            sum += a[j];
            if(sum >= e[j - 1]) {
                mx = max(mx, dp[j - 1]);
            }
        }
        sum = 0;
        int idx = - 1;
        int mn = 1e18;
        for(int j = i; j >= 1; j--) {
            sum += a[j];
            if(sum >= e[j - 1] && mx == dp[j - 1]) {
                if(mn > sum) {
                    idx = j - 1;
                    mn = min(mn, sum);
                }
            }
        }
        if(idx == - 1) {
            dp[i] = dp[i - 1];
            e[i] = e[i - 1] + a[i];
        }
        else {
            dp[i] = dp[idx] + 1;
            e[i] = mn;
        }

    }
    cout << dp[n];
}
#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...