Cod sursa(job #470894)

Utilizator loginLogin Iustin Anca login Data 15 iulie 2010 21:37:22
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
# include <fstream>
# include <iostream>
# include <algorithm>
# define DIM 5004
using namespace std;
int n, m, v[DIM], sol=DIM, p[DIM];

int cmp (int i, int j)
{
	if (v[i]<v[j])return 1;
	return 0;
}

void read ()
{
	ifstream fin ("secv.in");
	fin>>n;
	for(int i=1;i<=n;++i)
		fin>>v[i], p[i]=i;
	sort(p+1, p+n+1, cmp);
	int l=-1;
	for (int i=1;i<=n;++i)
		if (v[p[i]]!=l)
		{
			++m;
			l=v[p[i]];
			v[p[i]]=m;
		}
		else
			v[p[i]]=m;
}

void solve ()
{
	int nr;
	for (int i=1;i<=n-m+1;++i)
		if (v[i]==1)
		{
			nr=2;
			for(int j=i+1;j<=n && nr<=m;++j)
			{
				if (v[j]==nr)
					++nr;
				if (nr==m+1 && j-i+1<sol)
					sol=j-i+1;
			}	
		}
}

int main()
{
	read ();
	ofstream fout ("secv.out");
	if (n==0)
	{
		fout<<"0";
		return 0;
	}
	solve ();
	if (sol!=DIM)
		fout<<sol;
	else
		fout<<"-1";
	return 0;
}