Pagini recente » Cod sursa (job #606587) | Cod sursa (job #289906) | Cod sursa (job #2633124) | Cod sursa (job #1749267) | Cod sursa (job #1398928)
#include <cstdio>
#define N 100005
using namespace std;
int nr,a[N],i,poz,p[N],h[N],v[N],n;
inline int bs(int x)
{
int p,u,mj;
p=1;u=nr;
if(v[nr]<x) return nr+1;
while(p<=u)
{
mj=(p+u)/2;
if(v[mj]<x) p=mj+1;
else u=mj-1;
}
return p;
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
nr=0;
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]);
poz=bs(a[i]);
if(poz>nr) ++nr,poz=nr;
p[i]=poz;
v[nr]=a[i];
}
printf("%d\n",nr);
poz=nr;
for(i=n;i>=1;--i)
if(p[i]==poz) h[poz]=a[i],--poz;
for(i=1;i<=nr;++i) printf("%d ",h[i]);
return 0;
}