Cod sursa(job #387253)

Utilizator DeadEyeNaiba Mihai Lucian DeadEye Data 27 ianuarie 2010 10:14:16
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<cstdio> //termin-o BAAAA
int n,a[100001],l[100001],tata[100001],x[100001];
void ver(int p)
{
	int pmin=0,min=2000001;
	int pas=1<<17;
	int i;
	for(i=0;pas;pas>>=1)
	{
		if(a[x[i+pas]]<=a[p]&&x[0]>=i+pas)
		{
			i+=pas;
		}
	}
	if(a[x[i+1]]>=a[p])
	{
	    min=x[i+1];
	    pmin=i+1;
	}
	else
	{
		min=0; pmin=0;
	}
	if(pmin!=0)
	{
		tata[i]=x[pmin];
		x[pmin]=p;
		l[p]=l[pmin]+1;
	}
	else
	{
		tata[i]=0;
		x[++x[0]]=p;
		l[p]=1;
	}
}
int main()
{
	int i,j;
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&a[i]);
	for(i=1;i<=n;++i)
	{
		l[i]=0;
		ver(i);
	}
	int max=0,pm=0;
	for(i=1;i<=n;++i)
		if(l[i]>max)
		{
			max=l[i];
			pm=i;
		}
	return 0;
}