Cod sursa(job #386327)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 24 ianuarie 2010 17:19:02
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
#define N 100001
int v[N],ant[N],lung[N],maxx,maxg,n,poz;
void citire()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	scanf("%d",&n);
	for (int i=1; i<=n; ++i)
		scanf("%d",&v[i]);
}
void dinamica()
{
	lung[1]=1;
	maxg=1;
	for (int i=2; i<=n; ++i)
	{
		lung[i]=1;
		for (int j=1; j<i; ++j)
		{
			if (v[j]<v[i]&&lung[j]+1>lung[i])
			{
				lung[i]=lung[j]+1;
				ant[i]=j;
			}
		}
		if (lung[i]>maxg)
		{
			maxg=lung[i];
			poz=i;
		}
	}
}
void afis(int poz)
{
	if (!ant[poz])
		return ;
	afis(ant[poz]);
	printf("%d ", v[ant[poz]]);
}
int main()
{
	citire();
	dinamica();
	printf("%d\n",maxg);
	afis(poz);
	printf("%d",v[poz]);
	return 0;
}