Cod sursa(job #422124)

Utilizator tranbachhaiTran Bach Hai tranbachhai Data 22 martie 2010 10:38:43
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<stdio.h>

int n,v[1<<17],poz[1<<17];

int main()
{
	int i,st,dr,m;
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	
	scanf("%d",&n);
	for (i=1;i<=n;++i)
		scanf("%d\n",&v[i]);
	for (i=1;i<=n;++i)
			if (v[i]>=poz[poz[0]])
					poz[++poz[0]]=v[i];
			else
			{
				st=1;
				dr=poz[0];
				while(st<dr)
					{
						m=(st+dr)/2;
						if (v[m]>=st)
								st=m+1;
						else
								dr=m-1;
					}
				poz[st]=v[i];
			}
	printf("%d\n",poz[0]);
	for (i=1;i<=poz[0];++i)
		printf("%d ",poz[i]);
	return 0;
}