This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include<iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long t=1;// cin>>t;
while(t--){
long long n; cin>>n;
vector<long long> a(n) , val(n,0) , dp(n,0),pre(n,0);
for(long long i=0;i<n;i++) cin>>a[i];
val[0] = a[0];
dp[0] = 1;
pre[0] = a[0];
for(long long i=1;i<n;i++)
pre[i] = pre[i-1]+a[i];
vector<long long> bsArr;
bsArr.push_back(pre[0]+val[0]);
for(long long i=1;i<n;i++){
//index i,
//find index j such that
// j < i
// pre[i] - pre[j] >= val[j]
long long j = upper_bound(bsArr.begin(),bsArr.end(),pre[i]) - bsArr.begin() - 1;
if(j==-1){
val[i] = pre[i];
dp[i]=1;
}
else {
val[i] = pre[i]-pre[j];
dp[i] = 1+dp[j];
}
bsArr.push_back(pre[i]+val[i]);
}
cout<<dp[n-1]<<endl;
}
return 0;
}
# | 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... |