Cod sursa(job #381167)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 9 ianuarie 2010 15:03:44
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <set>
using namespace std;

ifstream in("secv.in");
ofstream out("secv.out");

int n,x[5001],i,l[5001],p,minim,j;
set<int> a;
set<int>::iterator it;

int main()
{
	in>>n;
	for(i=1; i<=n; i++)
	{
		in>>x[i];
		a.insert(x[i]);
	}
	for(i=1;i<=n; i++)
		if(x[i] == *a.begin())
			l[i] = 1;
		else
		{
			it = a.find(x[i]);
			it--;
			p=0;
			for(j=1; j<i; j++)
				if(x[j] == *it && l[j]!=n+1 && (p==0 || l[j]<l[p]))
					p=j;
			if(p!=0)
				l[i]=l[p]+(i-p);
			else
				l[i]=n+1;
		}
	minim = -1;
	for(i=1; i<=n; i++)
		if(x[i] == *a.rbegin() && (minim == -1 || minim > l[i]))
			minim = l[i];
	out<<minim;
	return 0;
}