Cod sursa(job #266531)

Utilizator belgun_adrianBelgun Dimitri Adrian belgun_adrian Data 25 februarie 2009 19:31:01
Problema Deque Scor 60
Compilator fpc Status done
Runda Arhiva educationala Marime 0.76 kb
// Arhiva educationala - Deque


var
        n, k, i, p, u   : longint;
        a, d            : array[1..5000000] of longint;
        s               : int64;
        f               : text;

begin
assign  (f, 'deque.in');
reset   (f);
readln  (f, n, k);
for i := 1 to n do
    readln (f, a[i]);
close   (f);

s       := 0;
d[1]    := 1;
p       := 1;
u       := 1;
if (k=1) then s := a[1];
for i := 2 to n do
    begin
    // sterge elementele mai mari din coada
    while (a[i] <= a[d[u]]) and (p<=u) do
        dec (u);
    inc (u);
    d[u] := i;
    if (i>=k) then
        inc(s,a[d[p]]);
    if ((d[u] - d[p] + 1) >= k) then
        inc(p);
    end;

assign  (f, 'deque.out');
rewrite (f);
writeln (f, s);
close   (f);

end.