Pagini recente » Cod sursa (job #970224) | Cod sursa (job #927372) | Cod sursa (job #2051511) | Cod sursa (job #442061) | Cod sursa (job #1223306)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;;
int v[10001],p[10001],q[10001],sol[10001];
int main ()
{ freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n,i,nq,*it,poz,lis;
scanf("%d",n);
for(i=1;i<=n;i++)
scanf("%d",&V[i]);
nq=1;q[1]=v[1];p[1]=1;
for(i=2;i<=n;i++)
{ it= upper_bound(q+1,q+nq+1,v[i]);
poz=(int)(it-q);
if(poz>nq)
{ ++nq;
}
q[poz]=v[i];
p[i]=poz;
}
printf("%d\n",nq);
lis=nq;
poz=n;
for(i=lis;i>0;i--)
{ while(p[poz]!=lis)
poz--;
sol[lis]=v[poz];
lis--;
}
for(i=1;i<=nq;i++)
printf(n%d ",sol[i]);
}