Pagini recente » Cod sursa (job #2086576) | Cod sursa (job #1505144) | Cod sursa (job #623919) | Cod sursa (job #1134800) | Cod sursa (job #393948)
Cod sursa(job #393948)
#include<cstdio>
int n,m,a[100001],l[100001],p[100001],x[100001];
int ver(int pp)
{
int vv=0,pas=1<<17;
for(vv=0;pas;pas>>=1)
if(vv+pas<=m && a[x[vv+pas]]<pp)
vv+=pas;
return vv+1;
}
void preamultefunctii(int pp)
{
if(p[pp])
preamultefunctii(p[pp]);
printf("%d ",a[pp]);
}
int main()
{
int i,j;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
l[i]=1;
m=0;
x[++m]=1;
for(i=2;i<=n;++i)
{
j=ver(a[i]);
if(j>m)
++m;
x[j]=i;
p[i]=x[j-1];
}
printf("%d\n",m);
preamultefunctii(x[m]);
return 0;
}