Pagini recente » Cod sursa (job #2935417) | Cod sursa (job #2609627) | Cod sursa (job #2093778) | Cod sursa (job #2384812) | Cod sursa (job #447289)
Cod sursa(job #447289)
#include<cstdio>
int x[1<<17],pred[1<<17],v[1<<17];
int n,p,m,i;
int caut (int q)
{
int i,pas=1<<16;
for (i=0;pas;pas>>=1)
if (i+pas<=m && v[x[i+pas]]<q)
i+=pas;
return 1+i;
}
void qq (int x)
{
if (pred[x]!=0)
qq ( pred[x]) ;
printf("%d ", v[x]);
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d", &n);
for (i=1;i<=n;i++)
scanf("%d", &v[i]);
m=1;
x[1]=1;
for (i=2;i<=n;i++)
{
p=caut (v[i]);
if (p>m) ++m;
x[p]=i;
pred[i]=x[p-1];
}
printf("%d\n", m);
qq ( x[m]);
return 0;
}