Cod sursa(job #1010670)

Utilizator The_DisturbedBungiu Alexandru The_Disturbed Data 15 octombrie 2013 13:31:47
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<stdio.h>
int n,i,j,v[100013],t[100013],l[100013],b,ib,max,imax;
void scrie(int i)
{
	if(i==-1)return;
	scrie(t[i]);
	printf("%d ",v[i]);
}
int main()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<n;++i)scanf("%d",&v[i]);
	max=-1;
	for(i=0;i<n;++i)
	{
		b=0;
		j=i-1;
		while(j!=-1)
		{
			if(v[j]<v[i])
			{
				if(l[j]>b)
				{
					b=l[j];
					ib=j;
				}
			}
			--j;
		}
		if(b==0)t[i]=-1,l[i]=1;
		else 
		{
			l[i]=b+1;
			t[i]=ib;
			if(l[i]>max)max=l[i],imax=i;
		}
	}
	printf("%d\n",max);
	scrie(imax);
	return 0;
}