Cod sursa(job #492799)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 15 octombrie 2010 22:45:42
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
int n,a[100001],i,j,bst[100001],max,max1,poz;
void read(),solve();
int main()
{
	read();
	solve();
	return 0;
}
void read()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);
}
void solve()
{
	bst[n]=1;
	for(i=n-1;i>=1;i--)
	{
		max=0;
		for(j=i+1;j<=n;j++)
			if(a[j]>a[i] && bst[j]>max)
				max=bst[j];
		bst[i]=1+max;
		if(bst[i]>max1)
		{
			max1=bst[i];
			poz=i;
		}
	}
	printf("%d",max1);
	printf("\n");
	printf("%d ",a[poz]);
	for(i=poz+1;i<=n;i++)
	{
		if(a[i]>a[poz] && bst[i]==max1-1)
		{
			printf("%d ",a[i]);
			--max1;
		}
	}
}