Pagini recente » Cod sursa (job #379785) | Cod sursa (job #1604658) | Cod sursa (job #2250290) | Cod sursa (job #354333) | Cod sursa (job #626283)
Cod sursa(job #626283)
#include<stdio.h>
#define N 5001
long a[N],b[N],p[N],i,j,k,m,n,l,t,r[N],x;
int main()
{freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld",&a[i]);
p[n]=t=1;
for(k=n-1;k;k--)
{for(x=0,i=k+1;i<=n;i++)
if(a[i]>=a[k]&&p[i]>x)
x=p[i];
p[k]=1+x;}
x=p[1];
for(k=2;k<=n;k++)
if(p[k]>=x)
x=p[k],t=k;
b[m++]=t;
for(i=t+1;i<=n;i++)
if(a[i]>a[t]&&p[i]==x-1)
x--,b[m++]=i;
for(i=b[0];i<b[m-1];i++)
{for(t=j=0;j<m;j++)
if(a[i]!=a[b[j]])
t++;
if(t==m)
r[++l]=i;}
if(l)
printf("%ld",(r[1]-b[0]<b[m-1]-r[l])?(b[m-1]-r[l]):(r[1]-b[0]));
else
printf("%ld",b[m-1]-b[0]+1);
return 0;}