Cod sursa(job #570108)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 2 aprilie 2011 16:49:30
Problema Secv Scor 90
Compilator cpp Status done
Runda 105 Marime 0.84 kb
#include<stdio.h>
#include<algorithm>
#define NMAX 5005
#define INF 2000000000

using namespace std;

int A[NMAX], N, i, j, Min = INF, Sir[NMAX], Numere, Pos, Cnt;
pair< int, int > Ord[NMAX];

int main()
{
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);

	scanf("%d", &N);
	for( i=0; i<N; i++ )
	{
		scanf("%d", &A[i]);
		Ord[i] = make_pair( A[i], i );
	}

	sort( Ord, Ord+N );

	Sir[1] = Ord[0].first;
	Numere = 1;

	for( i=1; i<N; i++ )
		if( Ord[i].first != Ord[i-1].first ) 
			Sir[++Numere] = Ord[i].first;
	
	for( i=0; Ord[i].first == Sir[1]; i++ )
	{
		Pos = Ord[i].second;
		Cnt = 1;

		for( j=Pos+1; j<N && Cnt < Numere; j++ )
			if( A[j] == Sir[Cnt+1] ) 
				++Cnt;

		if( Cnt==Numere && j-Pos+1 < Min )
			Min = j-Pos;
	}

	printf("%d\n", ( Min == INF ) ? -1 : Min );

	return 0;
}