Cod sursa(job #464271)

Utilizator bora_marianBora marian bora_marian Data 19 iunie 2010 16:09:09
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
using namespace std;
int v[5005],h[5005],n,sir[5005],nr,minim=10000,inceput,sfarsit;
int rezolva(int v[],int start,int sf);
int main()
{
	ifstream fin("secv.in");
	ofstream fout("secv.out");
	fin>>n;
	int i;
	for(i=1;i<=n;i++)
		fin>>v[i],h[i]=v[i];
	sort(h+1,h+n+1);
	for(i=1;i<=n;i++)
	{
		if(nr==0)
			sir[++nr]=h[i];
		if(h[i]!=sir[nr])
			sir[++nr]=h[i];
	}
    //for(i=1;i<=nr;i++)
		//fout<<sir[i]<<" ";
	//fout<<endl;
	for(i=1;i<=n;i++)
	{	
		if(v[i]==sir[1])
		{	
			inceput=i;
		    sfarsit=rezolva(v,i,n);
		}
		if((sfarsit-inceput+1)<minim && (sfarsit-inceput+1)>=1)
			minim=(sfarsit-inceput+1);
	}
	if(minim==10000)
		fout<<"-1";
	else
		fout<<minim;
	return 0;
}
int rezolva(int v[],int start,int sf)
{
	int actual=2,i,pp=0;
	if(nr==1)
		return start;
	while(actual!=nr+1 && pp==0)
	{
		int pres=0;
		for(i=start;i<=sf;i++)
		{	
			if(v[i]==sir[actual])
				actual++,start=i,pres=1;
			if(actual==nr+1)
				return i;
		}
		if(pres==0)
			pp=1;
	}
	return 0;
}