Pagini recente » Cod sursa (job #1651083) | Cod sursa (job #2821168) | Cod sursa (job #152274) | Cod sursa (job #92384) | Cod sursa (job #562264)
Cod sursa(job #562264)
#include<stdio.h>
int n,nr,v[100001],pred[100001],x[100001];
int caut(int poz)
{
int i,pas=1<<16;
for(i=0;pas;pas/=2)
if (pas+i<=nr && v[x[i+pas]]<v[poz])
i+=pas;
return i+1;
}
void sir(int p)
{
if (pred[p])
sir(pred[p]);
printf("%d ",v[p]);
}
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",&v[i]);
}
nr=1;
x[1]=1;
for(i=2;i<=n;++i)
{
j=caut(i);
if (j>nr) ++nr;
x[j]=i;
pred[i]=x[j-1];
}
printf("%d\n",nr);
sir(x[nr]);
return 0;
}