Pagini recente » Cod sursa (job #14543) | Cod sursa (job #272227) | Cod sursa (job #2059554) | Cod sursa (job #3241631) | Cod sursa (job #291892)
Cod sursa(job #291892)
#include<stdio.h>
#include<algorithm>
//#include<vector>
//#include<stdlib.h>
#define MAXN 5001
int i, j, k ,maxs, N ,v[MAXN], aux[MAXN], distincte[MAXN], mark, maxlength, start, mins = MAXN +1;
int
intcmp(const void *va, const void *vb)
{
return *(int*)va - *(int*)vb;
}
int main()
{
FILE*in=fopen("secv.in","r");
FILE*out=fopen("secv.out","w");
fscanf(in,"%d",&N);
for( i = 1 ; i <= N ; i ++)
{
fscanf(in,"%d",&v[i]);
aux[i] = v[i];
if(v[i] > maxs) maxs = v[i];
}
qsort(aux,N,sizeof(aux[0]),intcmp);
distincte[0] = -1;
for( i = N ; i >= 1; i--)
{
// fprintf(out,"%d\n",aux[i]);
if(aux[i] != distincte[k])
distincte[++k] = aux[i];
}
// for( i = 1; i <= k ;i++)
// fprintf(out,"%d\n",distincte[i]);
maxlength = k;
for( i = N ; i >= 1 ; i--)
{
if(v[i] == maxs)
{
start = i;
k = 1;
for( j = start ; j >=1 ; j--)
{
// fprintf(out,"%d\n",k);
if(v[j] == distincte[k+1])
{
k = k + 1;
if( k == maxlength)
{
if( start - j + 1 < mins) mins = start - j + 1;
j = 0 ;
}
}
}
}
}
if(mins == MAXN +1) mins = -1;
fprintf(out,"%d\n",mins);
return 0;
}