Cod sursa(job #470889)

Utilizator loginLogin Iustin Anca login Data 15 iulie 2010 21:26:39
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
# include <fstream>
# include <iostream>
# include <algorithm>
# define DIM 5004
using namespace std;
int n, m, v[DIM], sol=DIM;
int l[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 ()
{
	for(int i=1;i<=n;++i)
		l[i]=DIM;
	for (int i=1;i<=n;++i)
	{
		if (v[i]==1)
			p[i]=i;
		else
			for(int j=i-1;j;--j)
				if (v[j]+1==v[i] && i-p[j]+1<l[i])
					p[i]=p[j], l[i]=i-p[j]+1;
		if (v[i]==m && l[i]<sol)
			sol=l[i];
	}			
}

int main()
{
	read ();
	solve ();
	ofstream fout ("secv.out");
	fout<<sol;
	return 0;
}