Cod sursa(job #787569)

Utilizator akumariaPatrascanu Andra-Maria akumaria Data 13 septembrie 2012 19:00:27
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;


vector<int> v[100000];
int a[100000];



bool cmp(int x, int y)
{
	if(*(v[x].end()-1)<*(v[y].end()-1))
		return 0;
	return 1;
}



int main()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	int n,i,j,k=0,x;
	scanf("%d",&n);
	for(i=1;i<=n;++i)
	{
		scanf("%d",&x);
		for(j=1;j<=k;++j)
			if(*(v[a[j]].end()-1)<x)
			{
				v[j].push_back(x);
				break;
			}
		if(j==k+1)
		{
			v[++k].push_back(x);
			a[k]=k;
		}
		sort(a+1,a+k+1,cmp);
	}
	j=0;
	n=0;
	for(i=1;i<=k;++i)
		if(v[i].size()>j)
		{
			n=i;
			j=v[i].size();
		}
	printf("%d\n",j);
	for(i=0;i<j;++i)
		printf("%d ",v[n][i]);
	return 0;
}