Cod sursa(job #1414381)

Utilizator ButnaruButnaru George Butnaru Data 2 aprilie 2015 16:08:29
Problema Subsir crescator maximal Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.78 kb
program scmax;
type tabel=array[0..100001] of longint;
var t,vv,sol:tabel;
    n,i,j,nr,v:longint;
    f1,f2:text;
function max(a,b:longint):longint;
begin
if a>b then max:=a else max:=b;
end;
function cauta(st,dr,x:longint):longint;
var m:longint;
begin
while st<=dr do begin
m:=(st+dr) div 2;
if sol[m]>=x then dr:=m-1 else st:=m+1;
end;
cauta:=st;
end;
begin
assign (f1,'scmax.in');
assign (f2,'scmax.out');
reset (f1);
rewrite (f2);
readln (f1,n);
for i:=1 to n do read (f1,t[i]);
sol[1]:=t[1]; v:=1; vv[1]:=1;
for i:=2 to n do begin
j:=cauta(1,v,t[i]); sol[j]:=t[i];
vv[i]:=j; v:=max(v,j);
end;
writeln (f2,v); nr:=v;
for i:=n downto 1 do
if vv[i]=nr then begin sol[nr]:=t[i]; nr:=nr-1; end;
for i:=1 to v do write (f2,sol[i],' ');
close (f1);
close (f2);
end.