Cod sursa(job #299354)

Utilizator nitica_isabelaNitica Isabela nitica_isabela Data 6 aprilie 2009 18:36:44
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<fstream>
#include<iostream>

using namespace std;

int n,solmin,nr;
long 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--; 
	for(i=1;i<=nr;i++) cout<<s[i]<<" ";
	fin.close();
}

void Solve()
{
	int i,p,sol,k;
	solmin=6000;
	for(i=1;i<=n;i++)
	{
		k=1;
		sol=0;
		if(a[i]==s[k])
		{
			k++; sol++;
			for(p=i+1;(p<=n)&&(sol<nr);p++)
			{if(a[p]==s[k])
				{k++;
				 sol++;
				}
			}
		}
		if(sol==nr) 
			{sol=p-i; 
			 if(sol<solmin) solmin=sol;
			}
	}
}

int main()
{
	ReadData();
	sort(s+1,s+nr);
	Solve();
	ofstream fout("secv.out");
	if(solmin==6000) fout<<"-1\n";
	else fout<<solmin<<"\n";
	fout.close();
	return 0;
}