Pagini recente » Cod sursa (job #1877108) | Cod sursa (job #1255778) | Cod sursa (job #85401) | Cod sursa (job #1525219) | Cod sursa (job #398533)
Cod sursa(job #398533)
#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(long k)
{
long 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=w[j];
for (j=1;j<=i;j++)
{
printf("%ld ",x[poz]);
poz=w[j];
}
printf("\n");
return 0;
}
return 0;
}