#include <bits/stdc++.h>
using namespace std;
int const MAX=5e5+5;
int n;
int v[MAX];
long long sp[MAX];
struct sol{
int cnt,ind;
bool operator<(sol ot){
if(cnt!=ot.cnt)
return cnt<ot.cnt;
return ind<ot.ind;
}
}dp[MAX];
void read(){
cin>>n;
int i;
for(i=1;i<=n;++i){
cin>>v[i];
sp[i]=sp[i-1]+v[i];
}
}
long long get_sp(int l,int r){
return sp[r]-sp[l-1];
}
int get_dp(){
int i,j;
for(i=1;i<=n;++i){
dp[i]={1,0};
for(j=1;j<i;++j)
if(get_sp(dp[j].ind+1,j)<=get_sp(j+1,i)){
sol cand={dp[j].cnt+1,j};
if(dp[i]<cand)
dp[i]=cand;
}
}
return dp[n].cnt;
}
int main()
{
read();
cout<<get_dp();
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... |