Submission #1171495

#TimeUsernameProblemLanguageResultExecution timeMemory
1171495AlgorithmWarriorBigger segments (IZhO19_segments)C++20
37 / 100
1594 ms2168 KiB
#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 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...