Pagini recente » Cod sursa (job #2268149) | Cod sursa (job #2360983) | Cod sursa (job #1079011) | Cod sursa (job #2671099) | Cod sursa (job #785270)
Cod sursa(job #785270)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Max 100001
int bst[Max],c[Max],v[Max],n,k;
int cbinar(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[l] = x;
if(l == k + 1) k++;
return l;
}
void tipar(int p,int w)
{
if(w > 0)
for(int i=p;i>0;i--)
if( bst[i] == w )
{
tipar(i-1,w-1);
printf("%d ",v[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",&v[i]);
for(int i=1;i<=n;i++)bst[i] = cbinar(v[i],1,k+1);
// for(int i=1;i<=n;i++) printf("%d ",bst[i]);
printf("%d\n",k);
tipar(n,k);
return 0;
}