Cod sursa(job #1116727)

Utilizator ovidiu95Decean Ovidiu Ciprian ovidiu95 Data 22 februarie 2014 19:26:47
Problema Subsir crescator maximal Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.39 kb
var     f,g:text;
        bufin,bufout:array[1..65000] of byte;
        a,b,v:array[-1..100010] of longint;
        i,j,nr,n,x,c:longint;
 
 
procedure scrie(nr,i:longint);
begin
        while b[i]<>nr do dec(i);
        if nr>1 then scrie(nr-1,i);
        write(g,a[i],' ');
end;
 
 
 
procedure cauta(x,st,dr:longint);
var     m:longint;
begin
        if st<dr then begin
        m:=(st+dr) div 2;
        if v[m]<x then cauta(x,m+1,dr)
                else  if v[m]>=x then cauta(x,st,m)
                        else begin c:=m; exit; end;
        end
        else begin
                c:=st;
                exit;
        end;
end;
begin
        assign(f,'scmax.in');
        assign(g,'scmax.out');
        reset(f);
        rewrite(g);
        settextbuf(f,bufin);
        settextbuf(g,bufout);
        readln(f,n);
        read(f,v[1]);
        a[1]:=v[1];
        b[1]:=1;
        nr:=1;
        for i:=2 to n do begin
                read(f,x);
                a[i]:=x;
                cauta(x,1,nr);
                if v[c]>=x then begin
                        v[c]:=x;
                        b[i]:=c;
                end
                else begin
                        inc(nr);
                        v[nr]:=x;
                        b[i]:=nr;
                end;
        end;
        writeln(g,nr);
        scrie(nr,i);
        close(g);
end.