Pagini recente » Cod sursa (job #2887594) | Cod sursa (job #2289323) | Cod sursa (job #1139784) | Istoria paginii runda/oni_2015_cls9/clasament | Cod sursa (job #1697167)
#include <stdio.h>
#include <stdlib.h>
int v[100001], q[100001], p[100001], lmax;
int main(){
int n, i, st, dr, mij;
FILE *fin, *fout;
fin=fopen("scmax.in", "r");
fout=fopen("scmax.out", "w");
fscanf(fin, "%d", &n);
for(i=1; i<=n; i++){
fscanf(fin, "%d", &v[i]);
st=1; dr=lmax;
while(st<=dr){
mij=(st+dr)/2;
if(v[i]<q[mij]) dr=mij-1;
else st=mij+1;
}
if(q[st-1]!=v[i]){
lmax+=(st>lmax);
q[st]=v[i];
p[st]=i;
}
}
fprintf(fout, "%d\n", lmax);
for(i=1; i<=lmax; i++)
fprintf(fout, "%d ", v[p[i]]);
fclose(fin);
fclose(fout);
return 0;
}