Cod sursa(job #457746)

Utilizator ncbllrNegrii Costin ncbllr Data 21 mai 2010 13:29:19
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<iostream.h>
#define MAXN 100010

int n,v[ MAXN ],a[ MAXN ],last[ MAXN ],poz;
int sol[ MAXN ];


int main()
 
{
	int max;
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);
	
	scanf("%d", &n);
	for(int i = 1; i <= n; i++)
	{
		scanf("%d", &v[i]);
		a[i]++;
	}
	for(int  i=1 ;i <= n; i++)
		for(int j= i + 1 ;j<=n; j++)
		{
			if(v[i] < v[j] && a[ i ] + 1 > a[ j ]) 
				{
					a[ j ] = a[ i ] + 1;
					last[j]=i;
			    }					
			if( a[ j ] > max)
				{
					max = a[j];
			        poz=j;
		    	}	
			
        }
	printf("%d\n", max);
	
	int nr = max;
	while( poz )
	    {   
			sol[ nr-- ] = poz;
			poz = last[ poz ];
		}	
	for(int i=1;i<=max;i++)
        printf("%d ", v[ sol[ i ]]);		
	printf("\n");
	return 0;
	
}