Submission #156435

#TimeUsernameProblemLanguageResultExecution timeMemory
156435mdn2002Nizin (COCI16_nizin)C++14
20 / 100
870 ms16120 KiB
#include<bits/stdc++.h> using namespace std; long long mod=1e9+7; int n,psum[1005][1005],ssum[1005][1005],a[1005]; int main() { cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=0;i<n;i++) { for(int j=i;j<n;j++) { psum[i][j]+=psum[i][j-1]+a[j]; } } for(int i=n-1;i>=0;i--) { for(int j=i;j>=0;j--) { ssum[i][j]+=ssum[i][j+1]+a[j]; } } int ans=0; int l=0,r=n-1; while(l<=r) { if(a[l]==a[r]) { l++; r--; } else { bool t=false; for(int i=l;i<r;i++) { if(psum[l][i]==a[r]) { ans+=i-l; l=i+1; r--; t=true; } if(t)break; } if(t)continue; for(int i=r;i>l;i--) { if(ssum[r][i]==a[l]) { ans+=r-i; r=i-1; l++; t=true; } if(t)break; } if(t)continue; for(int i=l;i<r;i++) { for(int j=r;j>l;j--) { if(i>=j)continue; if(psum[l][i]==ssum[r][j]) { ans+=(i-l)+(r-j); l=i+1; r=j-1; t=true; } if(t)break; } if(t)break; } if(t)continue; cout<<r-l; return 0; } } cout<<ans<<endl; } /* 5 1 2 1 1 1 */
#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...
#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...