Pagini recente » Cod sursa (job #606907) | Cod sursa (job #2680943) | Cod sursa (job #487580) | Cod sursa (job #372281) | Cod sursa (job #546721)
Cod sursa(job #546721)
#include<cstdio>
#include<algorithm>
using namespace std;
struct QQ { int p , v ; } ;
QQ x[5002] ;
bool comp ( QQ a , QQ b )
{
return ( a.v < b.v || ( a.v == b.v && a.p < b.p ) ) ;
}
int v [ 5002 ] , p[ 5002 ] ;
int main ( )
{
freopen ( "secv.in", "r", stdin ) ;
freopen ( "secv.out", "w", stdout ) ;
int n , val , i ;
int r = 5010;
scanf ( "%d" , &n ) ;
for ( i = 1 ; i <= n ; ++ i )
{
scanf ( "%d", & x[i].v ) ;
x[i].p = i ;
}
sort ( &x[1] , &x[n+1] , comp ) ;
v[x[1].p] = 1 ;
val = 1 ;
for ( i = 2 ; i <= n ; ++ i )
{
if ( x[i].v != x[i-1].v )
++val;
v[x[i].p]=val;
}
/*for ( i = 1 ; i <= n ; ++ i )
printf ( "%d %d\n" , x[i].v , x[i].p ) ;
printf ( "\n" ) ;
for ( i = 1 ; i <= n ; ++ i )
printf ( "%d ", v[i] ) ;
printf ( "\n" ) ;*/
for ( i = 1 ; i <= n ; ++ i )
{
if ( v[i] == 1 )
p[v[i]] = i ;
else
p[ v[i] ] = p[ v[i]-1 ];
if ( v[i] == val )
{
if ( p[ v[i] ] != 0 )
r = min ( r , i-p[ v[i] ] + 1 ) ;
}
}
if ( r == 5010 )
printf ( "-1" ) ;
else
printf ( "%d" , r ) ;
return 0 ;
}