Cod sursa(job #300119)

Utilizator nitica_isabelaNitica Isabela nitica_isabela Data 7 aprilie 2009 11:36:39
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>

using namespace std;

int n, solmin, nr;
long a[5001], s[5001];


void ReadData()
{
	int i,j,gasit;
	ifstream fin("secv.in");
	fin>>n;
	nr=1;
	for(i=1;i<=n;i++) s[i]=-1;
	for(i=1;i<=n;i++)
	{
		fin>>a[i];
		gasit=0;
		for(j=1;(j<=nr)&&(gasit==0);j++)
			if(a[i]==s[j]) gasit++; 
		if(gasit==0) 
			{s[nr]=a[i];
		     nr++;
			}
	}
	nr--;
	fin.close();
}

void Ordonare()
{
	int ordo,i,aux;
	do
	{
		ordo=1;
		for(i=2;i<=nr;i++)
			if(s[i-1]>s[i])
			{
				ordo=0;
				aux=s[i];
				s[i]=s[i-1];
				s[i-1]=aux;
			}
	}
	while(ordo==0);
}

void Solve()
{int i,p,sol,k;
 solmin=32000; 
 for(i=1;i<=n;i++)
	{
		if(a[i]==s[1])
		{
			k=1; 
			for(p=i; (p<=n)&& (k!=nr+1); p++)
				if(a[p]==s[k]) k++;
			if(k==nr+1) 
				{sol=p-i; 
				 if(sol<solmin) solmin=sol;	
				} 
		}	
	}
 ofstream fout("secv.out");
 if(solmin!=32000) fout<<solmin<<"\n";
 else fout<<"-1\n"; 
 fout.close();
}

int main()
{
	ReadData();
	Ordonare();
	Solve();
	return 0;
}