Pagini recente » Cod sursa (job #2187233) | Cod sursa (job #686737) | Cod sursa (job #527305) | Cod sursa (job #918783) | Cod sursa (job #1083831)
#include<cstdio>
int n,i,j,v[100100],x[100100],t[100100],y[100100],p,u,mid,l,nr,ok;
FILE *f,*g;
int main(){
f=fopen("scmax.in","r");
g=fopen("scmax.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
}
l=0;
for(i=1;i<=n;i++){
p=1;
u=l;
ok=0;
while(p<=u){
mid=(p+u)/2;
if(v[x[mid]]>v[i])
u=mid-1;
else if(v[x[mid]]<v[i])
p=mid+1;
else{
ok=1;
break;
}
}
if(ok==0)
if(p==l+1){
l++;
x[l]=i;
t[i]=x[l-1];
}
else if(p==1){
x[p]=i;
t[i]=-1;
}
else{
x[p]=i;
t[i]=x[l-1];
}
}
fprintf(g,"%d\n",l);
i=x[l];
while(i!=-1){
nr++;
y[nr]=v[i];
i=t[i];
}
for(i=nr;i>=1;i--){
fprintf(g,"%d ",y[i]);
}
fclose(f);
fclose(g);
return 0;
}