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>
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 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... |
# | 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... |