Pagini recente » Cod sursa (job #97347) | Cod sursa (job #2613474) | Cod sursa (job #1359690) | Cod sursa (job #2366920) | Cod sursa (job #744683)
Cod sursa(job #744683)
#include <cstdio>
#define MAX 100010
#include <algorithm>
using namespace std;
int n,V[MAX],C[MAX],S[MAX],nr;
int cbinar(int x){
int l=1,r=nr+1,md;
while(l<r){
md=(l+r)/2;
if(S[md]>=x)r=md; else l=md+1;
}
if(r>nr)nr=r;
S[r]=x;
return r;
}
void tipar(int pos,int nr){
for(int i=pos;i>=0;i--)
if(C[i]==nr){
tipar(i,nr-1);
printf("%d ",V[i]);
return; }
}
int main(){
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&V[i]);
for(int i=0;i<n;i++)C[i]=cbinar(V[i]);
// for(int i=0;i<n;i++)printf("%d ",C[i]);
printf("%d\n",nr);
tipar(n,nr);
}
// o sortare