Cod sursa(job #181034)

Utilizator 0000go gcc 0000 Data 17 aprilie 2008 20:16:00
Problema Subsir crescator maximal Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#define N 1280
int re[N],v[N],l[N];
int main()
{
	int i,j,maxsub=0,pmax=0,max,n;
	freopen("scmax.in", "r",stdin);
	freopen("scmax.out", "w",stdout);
	scanf("%d", &n);
	for(i=1;i<=n;++i)
	{
		scanf("%d", &v[i]);
		re[i]=1;
	}
	l[n]=1;
	for(i=n;i>=1;--i)
	{
		max=0;
		for(j=i+1;j<=n;++j)
		{
			if(v[j]>v[i])
				if(l[j]>max)
				{
					max=l[j];
					re[i]=re[j];
				}
				else if(l[j]==max) re[i]=(re[i]+re[j])%9901;
		}
		++max;
		l[i]=max;
		if(max>maxsub) {maxsub=max; pmax=i; }
	}
	
	printf("%d\n", maxsub);
	int b=0;
	for(int i=pmax;i<=n;++i)
	{
		if(v[i]>b)
			printf("%d ", v[i]);
		b=v[i];
	}	
	return 0;
}