Cod sursa(job #468870)

Utilizator 05_YohnE1 La5c01 05_Yohn Data 5 iulie 2010 12:51:09
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 i>=k then suma:=suma+a[deque[front]];
    if deque[front]=i-k+1 then inc(front);
end;
write(suma);
close(output);
close(input);
end.