Cod sursa(job #464670)

Utilizator loginLogin Iustin Anca login Data 21 iunie 2010 13:03:56
Problema Secv Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
# include <fstream>
# include <iostream>
# include <vector>
# include <algorithm>
# define P 2000000
# define pb push_back
using namespace std;
int v[5005], n, nre, l[5005], p[5005], sol=P;
vector<int>V[P];

void read ()
{
	int x;
	ifstream fin ("secv.in");
	fin>>n;
	for(int i=1;i<=n;++i)
	{
		l[i]=1;
		p[i]=i;
		fin>>v[i];
		x=v[i]%P;
		if (!binary_search(V[x].begin(), V[x].end(), v[i]))
		{
			++nre;
			V[x].pb(v[i]);
		}
	}
}	

void solve ()
{
	p[1]=1;
	for(int i=2;i<=n;++i)
		for(int j=i-1;j;--j)
		{
			if (v[j]<v[i] && l[j]+1>l[i])
					l[i]=l[j]+1, p[i]=p[j];
			if (l[i]==nre && i-p[i]+1<sol)sol=i-p[i]+1;
		}
}

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