Pagini recente » Cod sursa (job #1187190) | Cod sursa (job #398487) | Cod sursa (job #735831) | Cod sursa (job #1288737) | Cod sursa (job #398528)
Cod sursa(job #398528)
#include<stdio.h>
#define NMAX 100100
#define inf 2000000100
long poz,nr,y[NMAX],z[NMAX],w[NMAX],x[NMAX],i,j,n,m,k,l,a,s,iin,ssf,in,sf,rez;
void caut(int k)
{
int in=1,sf=n;
while (in<=sf)
{
m=(in+sf)/2;
if (k>z[m]&&y[m])
in=m+1;
else
sf=m-1;
}
poz=y[sf];
nr=sf;
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;++i)
{
scanf("%ld",&x[i]);
z[i]=inf;
}
y[1]=1;
z[1]=x[1];
for (i=2;i<=n;i++)
{
poz=0;
nr=0;
caut(x[i]);
if (z[nr+1]>x[i])
{
z[nr+1]=x[i];
y[nr+1]=i;
w[nr]=i;
}
}
for (i=n;i>=1;i--)
if (y[i]!=0)
{
printf("%ld\n",i);
poz=y[1];
for (j=1;j<=i;j++)
{
printf("%ld ",x[poz]);
poz=w[j];
}
return 0;
}
return 0;
}