Pagini recente » Cod sursa (job #2481295) | Cod sursa (job #1663468) | Cod sursa (job #1292603) | Cod sursa (job #2000350) | Cod sursa (job #354494)
Cod sursa(job #354494)
#include <stdio.h>
#define N 1<<17
int n,v[N],val[N],r;
int cbin(int x)
{
int i,step;
for (step=1; step<=r; step<<=1);
for (i=0; step; step>>=1)
if (i+step<=r && val[i+step]<x)
i+=step;
return ++i;
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
int i,poz;
scanf("%d",&v[1]);
val[++r]=v[1];
for (i=2; i<=n; i++)
{
scanf("%d",&v[i]);
if (v[i]>val[r])
val[++r]=v[i];
else
{
poz=cbin(v[i]);
val[poz]=v[i];
}
}
printf("%d\n",r);
for (i=1; i<=r; i++)
printf("%d ",val[i]);
return 0;
}