Pagini recente » Cod sursa (job #2034687) | Cod sursa (job #1093032) | Cod sursa (job #1483742) | Cod sursa (job #1118464) | Cod sursa (job #1418981)
#include <stdio.h>
#include <stdlib.h>
int s[100001],v[100001],p[100001],n,nr;
void afis(int i)
{
if(p[i])
afis(p[i]);
printf("%d ",v[i]);
}
int cautbin(int x)
{
int i=0,pas=1<<16;
for(pas*=2; pas; pas>>=1)
if(i+pas<=nr && v[s[i+pas]]<x)
i+=pas;
return i;
}
int main()
{
int i,poz,z;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; i++)
scanf("%d",&v[i]);
for(i=1; i<=n; i++)
{
poz=cautbin(v[i]);
p[i]=s[poz];
s[poz+1]=i;
if(nr<poz+1)
{
nr=poz+1;
z=i;
}
}
printf("%d\n",nr);
afis(z);
return 0;
}