Cod sursa(job #897291)

Utilizator superman_01Avramescu Cristian superman_01 Data 27 februarie 2013 19:50:41
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<fstream>
#include<algorithm>
#include<cstring>

#define NMAX 5005
#define BIG 5001
#define min(a,b) ((a)<(b)?(a):(b))

using namespace std;

ifstream f("secv.in");
ofstream g("secv.out");

int n,v[NMAX],aux[NMAX],aux_size,sir[NMAX];
int start,final,res;

void read  ( void )
{
	f>>n;
	for(int i(1); i <= n ; ++i )
		f>>v[i];
	memcpy(sir,v,sizeof(v));
	f.close();
}
void solve( void )
{
	
	sort(sir+1,sir+n+1);
	aux[1]=sir[1];
	aux_size=1;
	for(int i(2); i <= n; ++i )
		if(sir[i] != sir[i-1] )
			aux[++aux_size]=sir[i];
		res=BIG;	
	 for(int i(1); i <= n ; ++i )	
           if( v[i] == sir[1] )
		   {
			   if(aux_size >=2 )
			   {
			   int numb=2;
			   
			   for(int ii(i+1); ii <= n ; ++ii)
			   {
				   if( v[ii] == aux[numb] ) 
			        ++numb;
					   if(numb == aux_size + 1 )
					   {
						   
						    res=min(ii-i+1,res);
						   break;
					   }
			   
			   }
			   }
			   else
			   {
				   res=1;
				   break;
			   }
		   }			   
	
	
	
}

inline void write ( void )
{
	
	if(res == BIG )
		g<<"-1"<<"\n";
	else
		g<<res<<"\n";
	g.close();
	
	
	
}


int main()
{
	
	read();
	solve();
	write();
    return 0;	
}