Submission #1159106

#TimeUsernameProblemLanguageResultExecution timeMemory
1159106the_ZHERBigger segments (IZhO19_segments)C++20
27 / 100
1598 ms83012 KiB
#include <bits/stdc++.h> #define boost ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define int long long using namespace std; const int inf=1e17; const int N=1e5+5; const int N1=1e5+5; const int N2=5000; const int mod=1e9+7; const int k1=447; struct edge{ int d,in; }; struct edge1{ int x,g,d; }; vector<int>v; int dp[N2][N2]; signed main(){ boost; int n; cin>>n; v.push_back(0); for(int i=0;i<n;i++){ int x; cin>>x; v.push_back(x); } for(int i=1;i<=n;i++){ dp[1][i]=v[i]+dp[1][i-1]; } for(int i=2;i<=n;i++){ for(int j=1;j<=n;j++){ dp[i][j]=inf; } } int cnt=0; int ans=1; for(int i=2;i<=n;i++){ for(int r=i;r<=n;r++){ int sum=0; for(int l=r;l>=i;l--){ sum+=v[l]; if(sum>=dp[i-1][l-1]&&dp[1][n]-dp[1][r]>=sum&&r!=n){ dp[i][r]=min(dp[i][r],sum); ans=max(ans,i); } if(r==n&&sum>=dp[i-1][l-1]){ dp[i][r]=min(dp[i][r],sum); ans=max(ans,i); } } } } cout<<ans; }
#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...