Pagini recente » Cod sursa (job #479483) | Cod sursa (job #990456) | Cod sursa (job #612338) | Cod sursa (job #475524) | Cod sursa (job #626278)
Cod sursa(job #626278)
#include<stdio.h>
#define N 5001
long a[N],b[N],p[N],i,j,k,c,m,n,u,v,l,t,r[N],w,max;
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--)
{max=0;
for(i=k+1;i<=n;i++)
if(a[i]>=a[k]&&p[i]>max)
max=p[i];
p[k]=1+max;}
max=p[1];
for(k=2;k<=n;k++)
if(p[k]>=max)
max=p[k],t=k;
b[m++]=t;
for(i=t+1;i<=n;i++)
if(a[i]>a[t]&&p[i]==max-1)
max--,b[m++]=i;
for(i=b[0]+1;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)
w=(r[1]-b[0]<b[m-1]-r[l])?(b[m-1]-r[l]):(r[1]-b[0]);
else
w=b[m-1]-b[0]+1;
printf("%ld",w);
return 0;}