Pagini recente » Rating victor dumitrescu (vic_hvymetal) | Cod sursa (job #2065016) | Cod sursa (job #1822148) | Cod sursa (job #1329817) | Cod sursa (job #750599)
Cod sursa(job #750599)
#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]);
printf("%d\n",nr);
tipar(n,nr);
return 0;
}