Thứ Ba, 3 tháng 5, 2022

SMAX PASCAL

const   vc=trunc(1e9);
var     a,f,t,ds:array[0..100000] of longint;
        n,i,max,res:longint;

procedure nhap;
var i:longint;
begin
    read(n);
    for i:=1 to n do read(a[i]);
end;

procedure truyvet(k:Longint);
var i,d:longint;
begin
    d:=0;
    while k>0 do
    begin
        inc(d);
        ds[d]:=k;
        k:=t[k];
    end;
    writeln(d); 
    for i:=d downto 1 do write(ds[i],' ');
end;

procedure giai;
var i,j,jmax,imax:longint;
begin
    f[1]:=a[1];f[0]:=0;
    for i:=2 to n do
       begin
           jmax:=0;
           for j:=1 to i-1 do
              if (a[j]<a[i]) and (f[j]>0) and (f[j]>f[jmax]) then
                jmax:=j;
        f[i]:=f[jmax]+a[i];
        t[i]:=jmax;
       end;
    imax:=1;
    for i:=2 to n do
        if f[i]>f[imax] then imax:=i;
    writeln(f[imax]);
    truyvet(imax);


end;

begin
    assign(input,'smax.inp');reset(input);
    assign(output,'smax.out');rewrite(output);
    nhap;
    giai;
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.