Submission #1348106

#TimeUsernameProblemLanguageResultExecution timeMemory
1348106killerzaluuBigger segments (IZhO19_segments)C++20
27 / 100
1595 ms71000 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    long long *a = new long long[n + 1];
    long long *pref = new long long[n + 1];
    pref[0] = 0;

    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        pref[i] = pref[i - 1] + a[i];
    }

    const long long inf = (long long)4e18;

    long long **dp = new long long*[n + 1];
    for (int i = 0; i <= n; i++) {
        dp[i] = new long long[n + 1];
        for (int j = 0; j <= n; j++) dp[i][j] = inf;
    }

    dp[0][0] = 0;

    for (int i = 1; i <= n; i++) {
        dp[i][1] = pref[i];
    }

    for (int i = 1; i <= n; i++) {
        for (int j = 2; j <= i; j++) {
            for (int k = j - 1; k < i; k++) {
                long long s = pref[i] - pref[k];
                if (dp[k][j - 1] <= s) {
                    dp[i][j] = min(dp[i][j], s);
                }
            }
        }
    }

    int ans = 1;
    for (int j = 1; j <= n; j++) {
        if (dp[n][j] < inf) ans = j;
    }

    cout << ans << '\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...