Pagini recente » Cod sursa (job #2928913) | Cod sursa (job #660260) | Cod sursa (job #1670401) | Cod sursa (job #2061493) | Cod sursa (job #788542)
Cod sursa(job #788542)
#include <cstdio>
#define Max 100001
int n,a[Max],b[Max],c[Max],k;
int c_bin(int x,int l,int r)
{
int m;
while(l<r)
{
m=(l+r)/2;
if(c[m]>=x)r=m; else l=m+1;
}
c[r]=x;
if(r>k)k=r;
return r;
}
void tipar(int n,int k)
{
if(k>0)
{
for(int i=n;i>0;i--)
if(b[i]==k)
{
tipar(i-1,k-1);
printf("%d ",a[i]);
return;
}
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
b[i]=c_bin(a[i],1,k+1);
}
printf("%d\n",k);
tipar(n,k);
return 0;
}