Cod sursa(job #2140599)

Utilizator 24601Dan Ban 24601 Data 23 februarie 2018 17:53:41
Problema Deque Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.88 kb
uses sysutils;

const SIZE = 5000000;

type
    dqe = record
        x : integer;
        i : integer;
    end;

    deque_t = array[0..SIZE] of dqe;

var
    dq : deque_t;
    n, k, x, i, t, h : Int32;
    r : Int64;
    fin, fout : text;
    buf : string;

begin
    assign(fin, 'deque.in');
    assign(fout, 'deque.out');

    reset(fin);
    rewrite(fout);

    Read(fin, n);
    Read(fin, k);

    t := 0;
    h := 0;
    r := 0;

    for i := 0 to n do
    begin
        Read(fin, x);

        while (t - 1 >= h) and (dq[t - 1].x >= x) do
        begin
            t := t - 1;
        end;

        dq[t].x := x;
        dq[t].i := i;
        t := t + 1;

        if i - k >= dq[h].i then
        begin
            h := h + 1;
        end;

        if i >= k - 1 then
        begin
            r := r + dq[h].x;
        end;
    end;

    writeln(fout, r);

    close(fin);
    close(fout);
end.