Cod sursa(job #357462)

Utilizator NemultumituMatei Ionita Nemultumitu Data 19 octombrie 2009 12:50:58
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
int v[100001],lung[100001],prev[100001];
int n,aux;

void comp()
{
	for (int i=1;i<=n;++i)
	{
		int max=0,prec=0;
		for (int j=1;j<i;++j)
		{
			if (v[j]<v[i]&&lung[j]>max)
			{
				max=lung[j];
				prec=j;
			}
		}
		lung[i]=max+1;
		prev[i]=prec;
	}
}

int maxim()
{
	int max=0;
	for (int i=1;i<=n;++i)
		if (lung[i]>max)
		{
			max=lung[i];
			aux=i;
		}
	return max;
}

void scrie (int x)
{
	if (x==0)
		return;
	scrie (prev[x]);
	printf("%d ",v[x]);
}

int main()
{
	freopen ("scmax.in","r",stdin);
	freopen ("scmax.out","w",stdout);
	scanf("%d",&n);
	for (int i=1;i<=n;++i)
		scanf("%d",&v[i]);
	comp();
	printf("%d\n",maxim());
	scrie(aux);
	return 0;
}