Cod sursa(job #268063)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 28 februarie 2009 18:29:58
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>

const int N=100007;

int n,v[N],lung[N],pmax,rez[N];

void citire()
{
	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]);
		max=0;
		for (int j=1;j<i; ++j)
			if (v[i]>v[j] && lung[j]>max)
				max=lung[j];
		lung[i]=1+max;
		if(lung[i]>lung[pmax])
			pmax=i;
	}
}

void sir()
{
	int i=pmax-1,aux=lung[pmax];
	rez[lung[pmax]]=v[pmax];
	while(i)
	{
		if(v[i]<v[pmax] && lung[i]==lung[pmax]-1)
		{
			rez[lung[i]]=v[i];
			pmax=i;
		}
		--i;
	}
	for(i=1;i<=aux;++i)
		printf("%d ",rez[i]);
}

int main()
{
	citire();
	printf("%d\n",lung[pmax]);
	sir();
	return 0;
}