Submission #1295614

#TimeUsernameProblemLanguageResultExecution timeMemory
1295614k12_khoiBigger segments (IZhO19_segments)C++17
100 / 100
65 ms12252 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pii pair<int,ll>
#define X first
#define Y second

const int N=5e5+5;

int n,x;
ll pre[N];
pii dp[N];

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

    cin >> n;
    pre[0]=0;
    for (int i=1;i<=n;i++)
    {
        cin >> x;
        pre[i]=pre[i-1]+x;
    }

    dp[0]=make_pair(0,0);
    dp[1]=make_pair(1,0);

    for (int i=1;i<=n;i++)
    {
        dp[i]=max(dp[i],dp[i-1]);

        x=lower_bound(pre+1,pre+n+1,2*pre[i]-dp[i].Y)-pre;

        if (x<=n) dp[x]=max(dp[x],make_pair(dp[i].X+1,pre[i]));
    }

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