AMSSEQ - Dãy số

Tác giả: ladpro98

Ngôn ngữ: Pascal

program amsseq2;
uses    math;
const   fi='';
var     f,a:array[0..10001] of longint;
        maxnum: array[0..10001] of longint;
        res,i,n,k,j:longint;
        inp:text;

procedure input;
var     i:longint;
begin
        assign(inp,fi);
        reset(inp);
        readln(inp,n,k);
        for i:=1 to n do read(inp,a[i]);
        close(inp);
end;



procedure init;
var     i,j,tmp:longint;
begin
       tmp:=low(longint);
       for i:=0 to k-1 do
        begin
                tmp:=max(tmp,a[i]);
                maxnum[i+1]:=tmp;
        end;
        for i:=k+1 to n+1 do
        begin
                tmp:=low(longint);
                for j:=i-1 downto i-k do
                begin
                        tmp:=max(tmp,a[j]);

                end;
                maxnum[i]:=tmp;

        end;
end;

begin
        input;
        init;
        f[0]:=0;
        f[1]:=a[1];
        res:=0;
        for i:=2 to k do
        begin
                f[i]:=low(longint);
                for j:=i-1 downto 0 do
                f[i]:=max(f[j]+a[i],f[i]);
                res:=max(res,f[i]);
        end;
        for i:=k+1 to n+1 do
        begin
                f[i]:=low(longint);
                for j:=i-1 downto i-k do
                f[i]:=max(f[j]+a[i],f[i]);
                res:=max(res,f[i]);
        end;
        write(res);
end.

Download