Pagini recente » Profil filipasvlad | Cod sursa (job #2697466) | Medie | Diferente pentru planificare/asociatia-infoarena intre reviziile 17 si 8 | Cod sursa (job #177549)
Cod sursa(job #177549)
#include <stdio.h>
#define N 100001
int x[N],n;
int caut(int z){
int st=1,dr=x[0],m;
while(st<=dr){
m=(st+dr)/2;
if(x[m]==z) return m;
if(x[m]>z) dr=m-1;
else st=m+1;
}
return st;
}
int main(){
int i,z,a;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a);
z=caut(a);
if(z>x[0]) x[0]++;
x[z]=a;
}
printf("%d\n",x[0]);
for(i=1;i<=x[0];i++)
printf("%d ",x[i]);
}