Pagini recente » Cod sursa (job #2856861) | Cod sursa (job #2863793) | Cod sursa (job #2430248) | Cod sursa (job #2862516) | Cod sursa (job #196415)
Cod sursa(job #196415)
#include <stdio.h>
#define N 100010
int n,v[N],x[N],nr;
void read(){
int i;
freopen("scmax.in","r",stdin);
scanf("%d",&n);
for (i=1;i<=n;++i)
scanf("%d",&v[i]);
}
int caut(int y){
int p=1,u=nr,m;
while (p!=u){
m=(p+u)/2;
if (y<=x[m])
u=m;
else
p=m+1;
}
if (x[p]<y)
++p;
return p;
}
void rezolva(){
int p,i;
x[++nr]=v[1];
for(i=2;i<=n;++i){
p=caut(v[i]);
if(p==nr+1)
++nr;
x[p]=v[i];
}
freopen("scmax.out","w",stdout);
printf("%d\n",nr);
for (i=1;i<=nr;++i)
printf("%d ",x[i]);
}
int main(){
read();
rezolva();
//write();
}