Pagini recente » Cod sursa (job #262689) | Cod sursa (job #497590) | Cod sursa (job #2895049) | Cod sursa (job #1283839) | Cod sursa (job #451087)
Cod sursa(job #451087)
#include <stdio.h>
#define lung 5000
int a[lung];
int ap[lung];
int c[lung];
int pr[lung];
int main()
{
int n,i,j,nr,max,rez;
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d",&n);nr=0;max=0;
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
for (j=0;j<nr;j++)
if (a[i]==ap[j])
break;
if(j==nr)
{
ap[nr++]=a[i];
}
for (j=i-1;j>=0;j--)
if (a[j]<a[i] && c[j]>=c[i])
c[i]=c[j]+1,pr[i]=j;
if (!c[i])
c[i]++;
if (c[i]>max)
max=c[i];
}
rez=-2;
if (max==nr)
for (i=0;i<n;i++)
if (c[i]==max)
{
for (j=i;c[j]>1;)
j=pr[j];
rez= (rez==-2 || i-j<rez) ? i-j : rez;
}
printf("%d\n",rez+1);
return 0;
}