Submission #1006194

#TimeUsernameProblemLanguageResultExecution timeMemory
1006194KindaNamelessBigger segments (IZhO19_segments)C++14
100 / 100
57 ms13328 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ld long double

void solve(){
    int N; cin >> N;

    vector<ll> P(N + 5);
    for(int i = 1; i <= N; ++i){
        ll a; cin >> a;
        P[i] = P[i - 1] + a;
    }

    vector<int> dp(N + 5), pos(N + 5);
    dp[0] = 0;
    pos[0] = 0;
    for(int i = 1; i <= N; ++i){
        pos[i] = max(pos[i], pos[i - 1]);
        dp[i] = dp[pos[i]] + 1;
        int next = lower_bound(P.begin() + 1, P.begin() + N + 1, 2 * P[i] - P[pos[i]]) - P.begin();
        pos[next] = i;
    }

    cout << dp[N];
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int tc = 1; //cin >> tc;

    while(tc--){
        solve();
    }

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