Pagini recente » Cod sursa (job #41773) | Cod sursa (job #1669278) | Cod sursa (job #1562688) | Cod sursa (job #1006231) | Cod sursa (job #1429370)
#include<stdio.h>
int n, nr, v[100001],pred[100001],mic[100001],afi[100001];
int cb ( int x ){
int i=0,pas=1<<16;
while(pas!=0){
if(i+pas <= nr && v[mic[i+pas]]<x)
i+=pas;
pas>>=1;
}
return i;
}
void subsir(int p)
{
if (pred[p] != 0)
subsir(pred[p]);
printf("%d ", v[p]);
}
int main(){
int i,j,k;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
nr=0;
mic[++nr]=1;
for(i=2;i<=n;i++){
j=cb(v[i]);
pred[i]=mic[j];
mic[j+1]=i;
if(j==nr)
nr++;
}
printf("%d\n",nr);
subsir(mic[nr]);
return 0;
}