Submission #168336

#TimeUsernameProblemLanguageResultExecution timeMemory
168336IldarKABigger segments (IZhO19_segments)C++14
0 / 100
3 ms376 KiB
#include <bits/stdc++.h>

using namespace std;
int n, a[500001], dp[3001][3001];
int main(){
    cin >> n;
    for(int i = 1;  i <= n; i++){
        cin >> a[i];
        dp[1][i] = 1;
    }
    for(int i = 2; i <= n; i++){
        int po = i - 1;
        long long sum = 0;
        long long sum2 = 0;
        int mx = 0;
        for(int j = i; j <= n; j++){
            sum += a[j];
            while(po > 0 && sum2 + a[po] <= sum){
                sum2 += a[po];
                mx = max(dp[po][i - 1], mx);
                po--;
            }
            if(po < i - 1){
                dp[i][j] = mx + 1;
            }
        }
    }
    int mx = 0;
    for(int i = 1; i <= n; i++){
        mx = max(dp[i][n], mx);
    }
    cout << mx;
}
#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...