Cod sursa(job #897261)

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

#define NMAX 5005
#define BIG 1<<30
#define max(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++;
	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] )
		   {
			   int numb=2;
			   
			   for(int ii(i+1); ii <= n ; ++ii)
			   {
				   if( v[ii] == aux[numb] ) 
			        numb++;
					   if(numb == aux_size + 1 )
					   {
						   
						   if( (  ii-i+1) < res )
						      res=ii-i+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;	
}