Cod sursa(job #969771)

Utilizator heracleRadu Muntean heracle Data 5 iulie 2013 12:51:54
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;

int v[100001],f[100001],prv[100001],g[100001];

int main()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	int n;
	scanf("%d",&n);

	for(int i=1;i<=n;i++)
		scanf("%d",&v[i]);

	int max,maxx=0,imax;
	for(int i=1;i<=n;i++)
	{
		max=0;
		for(int j=1;j<n;j++)
		{
			if(v[j]<v[i] && f[j]>max)
			{
				max=f[j];
				prv[i]=j;
			}

		}
		f[i]=max+1;
		if(f[i]>maxx)
		{
			maxx=f[i];
			imax=i;
		}

	}
	printf("%d\n",maxx);
	g[maxx]=imax;
	for(int i=maxx;i>0;i--)
	{
		imax=prv[imax];
		g[i-1]=imax;
	}
	for(int i=1;i<=maxx;i++)
	{
		printf("%d ",v[g[i]]);
	}
    return 0;
}