Pagini recente » Cod sursa (job #1540638) | Cod sursa (job #1801916) | Cod sursa (job #1761550) | Cod sursa (job #172417) | Cod sursa (job #143145)
Cod sursa(job #143145)
var
i,j,n,max,p:longint;
f:text;
poz,a,l:array[1..5000] of longint;
Begin
assign(f,'subsir2.in');
reset(f);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
close(f);
{ in vectorul L retin lungimea unei posibile secvente }
L[n]:=1; { orice numar face parte din cel putin o secventa de lungime 1 }
{ vector in care retin indici secventei de unde vin }
poz[n]:=-1;
{ plecam de la sfarsit }
for i:=n-1 downto 1 do
begin
L[i]:=1;
poz[i]:=-1;
for j:=i+1 to n do
if (a[i]<=a[j]) and (L[i]<1+L[j]) then
begin
L[i]:=1+L[j];
poz[i]:=j;
end;
end;
{
Pentru a determina solutia optima a problemei,
determinam maximul din vectorul L, apoi afisam solutia,
incepand cu pozitia maximului si utilizand informatiile
memorate in vectorul poz:
}
max:=L[1];p:=1;
for i:=2 to n do
if max<L[i] then begin
max:=L[i];
p:=i;
end;
assign(f,'subsir2.out'); rewrite(f);
writeln(f,max);
i:=p;
while i<>-1 do
begin
write(f,a[i],' ');
i:=poz[i];
end;
close(f);
End.