Cod sursa(job #516153)

Utilizator ms-ninjacristescu liviu ms-ninja Data 23 decembrie 2010 12:03:38
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <algorithm>
using namespace std;
#define dim 5001
int v[dim],a[dim],b[dim],best[dim],dap[dim];

int main()
{
	ifstream fin("secv.in");
	ofstream fout("secv.out");
	int i, n,m=1,j,maxim=1,poz=1;
	fin>>n;
	
	for(i=1;i<=n;++i)
	{
		fin>>v[i];
		a[i]=v[i];
	}
	sort(a+1,a+n+1);
	
	for(i=1;i<=n;++i)
	{
		while(a[i]==a[i+1])
			++i;
		b[m]=a[i];
		++m;
	}
	--m;
	best[1]=1;
	for(i=1;i<=n;++i)
	{
		for(j=i-1;j>=0;--j)
			if(v[i]>v[j])
				if(best[j]+1>best[i])
					best[i]=best[j]+1;
				//best[i]=val(best[j]+1,best[i]);
		if(maxim<best[i])
		{
			maxim=best[i];
			poz=i;
		}
	}
	if(maxim!=m)
		fout<<"1";
	else
	{
		int nr=v[poz],f=1;
		for(i=poz;i>=1;--i)
		{
			if(best[i]==maxim)
			{
				dap[f]=v[i];
				++f;
				--maxim;
			}
			if(maxim==0)
				break;
		}
		--f;
		sort(dap+1,dap+f+1);
		int ok=1;
		for(j=1;j<=n;++j)
			if(b[j]!=dap[j])
				ok=0;
			if(ok==0)
				fout<<"1";
			else
				fout<<poz-i+1;
	}
	
	return 0;
}