Cod sursa(job #235126)

Utilizator DahakaNameless Hero Dahaka Data 22 decembrie 2008 22:11:11
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#include<algorithm>
#define NMAX 5002
using namespace std;

int A[NMAX],S[NMAX];
inline int min(const int a,const int b)
{
	return a<b?a:b;
}
int main()
{
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);

	int N;
	scanf("%d",&N);

	int i,j,k;
	for(i=1; i<=N; ++i){
		scanf("%d",&A[i]);
		S[i]=A[i];
	}
	
	sort(S+1,S+N+1);
	
	int last=0,sf=0;
	for(i=1; i<=N; ++i)
		if( last!=S[i] )
		{	
			last=S[i];
			S[++sf]=S[i];
		}

	int first,second,ANS=N;
	bool ok=0;
	for(i=1; i<=N; ++i)
		if( A[i]==S[1] )
		{
			first=i;k=i;j=1;
			if( sf!=1 && k!=N)
				for(; ; )
				{
					++k;
					if( A[k]==S[j+1] )
						++j;		
					if( j==sf || k==N )
						break;
				}
			second=k;
			if( j==sf )
			{
				ANS=min(ANS,second-first+1);
				ok=1;
			}
		}

		if( !ok )printf("%d\n",-1);
		else
		printf("%d\n",ANS);
	
	return 0;
}