Cod sursa(job #931178)

Utilizator Marius96Marius Gavrilescu Marius96 Data 28 martie 2013 01:14:18
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<cstdio>

#include<algorithm>
static int v[100005], x[100005], d[100005], r[100005];

int main()
{
	freopen ("scmax.in","r",stdin);
#ifdef INFOARENA
	freopen ("scmax.out","w",stdout);
#endif

	int n, nx=0;
	scanf ("%d",&n);
	for(int i=0;i<n;i++){
		scanf ("%d",v+i);
		int *p=std::lower_bound (x,x+nx,v[i]);
		if(p==x+nx)
			nx++;
		*p=v[i];
		d[i]=p-x;
	}

	int rn=0;
	while(n-->=0)
		if(d[n]==nx-1){
			r[rn++]=v[n];
			nx--;
		}

	printf ("%d\n",rn);
	for(int i=rn;i;i--)
		printf ("%d ",r[i-1]);
	return 0;
}