Pagini recente » Profil Fullbuster | Cod sursa (job #2085114) | Cod sursa (job #169618) | Cod sursa (job #2189843) | Cod sursa (job #1692340)
#include <cstdio>
#define MAXN 100000
int v[MAXN+1],Q[MAXN+1],P[MAXN+1],v1[MAXN+1];
int main(){
FILE*fi,*fout;
int i,n,rez,pas,m,poz;
fi=fopen("scmax.in" ,"r");
fout=fopen("scmax.out" ,"w");
fscanf(fi,"%d" ,&n);
for(i=0;i<n;i++)
fscanf(fi,"%d" ,&v[i]);
m=0;
for(i=0;i<n;i++){
if(m==0){
Q[m++]=v[i];
P[i]=m-1;
}
else{
rez=-1;
for(pas=1<<18;pas;pas>>=1)
if(rez+pas<m&&Q[rez+pas]<v[i])
rez+=pas;
rez++;
Q[rez]=v[i];
P[i]=rez;
if(rez==m)
m++;
}
}
fprintf(fout,"%d\n" ,m);
poz=0;
for(i=n-1;i>=0;i--)
if(P[i]==m-1){
v1[poz]=v[i];
m--;
poz++;
}
for(i=poz-1;i>=0;i--)
fprintf(fout,"%d " ,v1[i]);
fclose(fi);
fclose(fout);
return 0;
}