Pagini recente » Cod sursa (job #1183815) | Cod sursa (job #1500730) | Cod sursa (job #425537) | Cod sursa (job #2141260) | Cod sursa (job #1847585)
#include <cstdio>
#include <algorithm>
using namespace std;
struct Pozitie
{
int nr, poz;
};
bool cmp( Pozitie a, Pozitie b )
{
return a.nr < b.nr;
}
Pozitie a[5005];
int v[5005];
int main()
{
freopen( "secv.in", "r", stdin );
freopen( "secv.out", "w", stdout );
int n, x, k = 0, min1 = 5005, i, j;
scanf( "%d", &n );
for( i = 1; i <= n; ++i )
{
scanf( "%d", &x );
a[i].nr = x;
a[i].poz = i;
}
a[0].nr = -1;
sort( a + 1, a + n + 1, cmp );
for( i = 1; i <= n; ++i ) {
if( a[i].nr != a[i - 1].nr )
k++;
v[a[i].poz] = k;}
for( i = 1; i <= n; ++i )
if( v[i] == 1 ) {
int p = 2;
for( j = i + 1; j <= n && p <= k; ++j ) {
if( v[j] == 1 && p == 2 )
i = j;
if( v[j] == p )
++p;}
if( p > k )
min1 = min( min1, j - i );}
if( min1 == 5005 )
min1 = -1;
printf( "%d", min1 );
return 0;}