Cod sursa(job #468863)

Utilizator 05_YohnE1 La5c01 05_Yohn Data 5 iulie 2010 12:47:21
Problema Deque Scor 25
Compilator fpc Status done
Runda Arhiva educationala Marime 0.69 kb
{$S-}

{pt fiecare subsecventa de k elem din a sa se afle minimul}
{si sa se calculeze suma acestor minime}

var a,deque:array[1..5000001]of LONGINT;
    suma:longint;
    i,front,back,k,n:LONGINT;
    buf:array[1..65000]of byte;
begin
assign(input,'deque.in');
reset(input);
settextbuf(input,buf);

assign(output,'deque.out');
rewrite(output);

read(n,k);
for i:=1 to n do read(a[i]);

front:=1; back:=0;
suma:=0;

for i:=1 to n do begin
    while (front<=back)and(a[i]<=a[deque[back]])do dec(back);
    inc(back);
    deque[back]:=i;
    if deque[front]=i-k then inc(front);
    if i>=k then inc(suma,a[deque[front]]);
end;
write(suma);
close(output);
close(input);
end.