Cod sursa(job #464674)

Utilizator loginLogin Iustin Anca login Data 21 iunie 2010 13:16:01
Problema Secv Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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, pmin;
vector<int>V[P];

void read ()
{
	v[pmin]=P;
	int x;
	ifstream fin ("secv.in");
	fin>>n;
	for(int i=1;i<=n;++i)
	{
		l[i]=1;
		p[i]=i;
		fin>>v[i];
		if (v[i]<v[pmin])pmin=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[pmin]=pmin;
	for(int i=pmin+1;i<=n;++i)
		for(int j=i-1;j>=pmin;--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;
}