This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// Muallif: Mansuraliyev Husanboy Murotali o'g'li >> NamPS
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define all(a) a.begin(), a.end()
#define F first
#define S second
// 0-9 >> 48-57; A-Z>>65-90 and a-z>>97-122 respectively;
//string a[11]={"CARS","cars","IuVEJxTXs","UvOHhng","yZKfAYmaqolM","NtGQibw","djPrCpek","FWzL","aySBaPyb","RM","gzYMynY"};
//string b[11]={"Unil","EPFL","vpVZzBNtL","SCubWma","ocIYneAPqxDs","hRkMGgJ","fHrFUQTj","XOwd","PolyProg","is","awesome"};
void solve(){
int n; cin>>n;
ll a[n+1];for(int i=1;i<=n;i++) cin>>a[i];
vector<ll> sum(n+2); ll k=0;
for(int i=1;i<=n;i++) k+=a[i],sum[i]=k;
vector<ll> dp(n+2),tem(n+2);
for(int i=1;i<=n;i++){
tem[i]=max(tem[i],tem[i-1]);
dp[i]=dp[tem[i]]+1;ll o=2ll*sum[i]-sum[tem[i]];
int x=lower_bound(sum.begin()+1,sum.end()-1,o)-sum.begin();
tem[x]=max(i*1ll,tem[x]);
}
cout<<dp[n];
}
int main(){
ios;
//int t=1; cin>>t; while(t--)
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |