Cod sursa(job #5475)

Utilizator dany_dangerDani Ilinca dany_danger Data 12 ianuarie 2007 17:24:03
Problema A+B Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.52 kb
program  aliniere;
var f:text;
n,i,j,k,max:word;
l1,l2:array[1..1000] of word;
v:array[1..1000] of real;
max1:real;
begin
assign(f,'aliniere.in'); reset(f);
readln(f,n);
for i:= 1 to n do
                 read(f,v[i]);
close(f);
l1[1]:=1;
l2[1]:=1;
for i:= 2 to n do begin
l1[i]:=0;
l2[i]:=0;
for j:= i downto 1 do
                     if (v[j]<v[i]) and
                     (l1[i]<l1[j]) then
                                       l1[i]:=l1[j];
l1[i]:=l1[i]+1;
for j:=i downto 1 do
                     if (v[j]>v[i])
                     and (l2[i]<l2[j]) then
                                               l2[i]:=l2[j];
l2[i]:=l2[i]+1;
end;
max:=l1[1]+l2[1];
k:=1;
for i:= 2 to n do
                 if max<l1[i]+l2[i] then begin
                                              max:=l1[i]+l2[i];
                                              k:=i;
                                         end;
max1:=v[k];
for i:= k-1 downto 1 do
                       if v[i]<=max1 then begin
                                              max1:=v[i];
                                              v[i]:=0;
                                           end;
max1:=v[k];
for i:= k to n do
                 if max1>=v[i] then begin
                                         max1:=v[i];
                                         v[i]:=0;
                                     end;
assign(f,'aliniere.out'); rewrite(f);
writeln(f,max-1);
for i:= 1 to n do
                 if v[i]<>0 then write(f,v[i],' ');
close(f);
end.