Cod sursa(job #1891970)
Utilizator | Data | 24 februarie 2017 15:22:17 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 70 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 1.25 kb |
Program p1;
var a,b,c: array[1..100100] of longint;
n,i,j,p: longint;
fi,fo: text;
begin
assign(fi,'scmax.in');
assign(fo,'scmax.out');
reset(fi);
rewrite(fo);
readln(fi,n);
i:=0;
while not(eoln(fi)) do begin
inc(i);
read(fi,a[i]);
end;
close(fi);
b[n]:=1; c[n]:=0;
p:=n;
for i:=n-1 downto 1 do begin
b[i]:=1;
p:=i;
for j:=i+1 to n do
if (a[j]>a[i]) and (b[j]>=b[p]) then p:=j;
if p<>i then begin
b[i]:=b[p]+1;
c[i]:=p;
end
else c[i]:=0;
end;
p:=1;
for i:=2 to n do
if b[i]>b[p] then p:=i;
writeln(fo,b[p]);
write(fo,a[p],' ');
while (c[p]<>0) do begin
p:=c[p];
write(fo,a[p],' '); inc(i);
end;
close(Fo);
end.