Pagini recente » Profil mihnea.anghel | Cod sursa (job #3003322) | Cod sursa (job #1483070) | Cod sursa (job #76337) | Cod sursa (job #767108)
Cod sursa(job #767108)
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX 100001
int a[MAX],b[MAX],c[MAX],n,k;
int cbin(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;
}
if( r > k )k = r;
c[r] = x;
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]);
for(int i=1;i<=n;i++)b[i] = cbin( a[i],1,k+1 );
// for(int i=1;i<=n;i++)printf("%d ",b[i]);
printf("%d\n",k);
tipar( n,k );
return 0;
}