Pagini recente » Cod sursa (job #2003495) | Cod sursa (job #231930) | Cod sursa (job #2814968) | Cod sursa (job #1228977) | Cod sursa (job #1483091)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 5002
FILE *f = fopen ( "secv.in", "r" );
FILE *g = fopen ( "secv.out", "w" );
int v[Nmax], ind[Nmax], norm[Nmax];
bool cmp ( int x, int y ){
return v[x] < v[y];
}
int main(){
int N;
fscanf ( f, "%d", &N );
for ( int i = 1; i <= N; ++i ){
fscanf ( f, "%d", &v[i] );
norm[i] = v[i];
ind[i] = i;
}
sort ( ind + 1, ind + N + 1, cmp );
sort ( norm + 1, norm + N + 1 );
int nr = 0;
int ultim = -1;
for ( int i = 1; i <= N; ++i ){
if ( norm[i] != ultim ){
ultim = norm[i];
norm[i] = (++nr);
}
else
norm[i] = nr;
}
for ( int i = 1; i <= N; ++i )
v[ind[i]] = norm[i];
int poz, minlg = N+1;
for ( int i = 1; i <= N; ++i ){
int what = 1;
poz = i;
for ( int j = i; j <= N; ++j ){
if ( v[j] == what ){
what++;
poz = j;
}
}
if ( what > nr )
minlg = min ( minlg, poz - i + 1 );
}
if ( minlg > N )
minlg = -1;
fprintf ( g, "%d", minlg );
return 0;
}