Cod sursa(job #524583)

Utilizator laurionLaurentiu Ion laurion Data 22 ianuarie 2011 13:48:37
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
#include<iostream>
int main()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	
	int n,v[100000];
	
	scanf("%d",&n);
	for(int i=0;i<n;++i)
	{
		scanf("%d",&v[i]);
	}
	int lmax[100000],poz[100000],max=0,pozmax;
	memset(lmax,0,sizeof(lmax));
	memset(poz,0xff,sizeof(poz));
	for(int i=n-1;i>=0;--i)
	{
		lmax[i]=1;
		for(int j=i+1;j<n;++j)
		{
			if(v[i]<v[j] && lmax[j]+1>lmax[i] )
			{
				lmax[i]=lmax[j]+1;
				poz[i]=j;
			}
		}
		if(max<lmax[i])
			max=lmax[i],pozmax=i;
	}
	
	printf("%d\n",max);
	
	for(int i=pozmax;i!=-1;i=poz[i])
		printf("%d ",v[i]);
	printf("\n");
	
	
	
	
	
	
	
	
	return 0;
}