Pagini recente » Cod sursa (job #139924) | Cod sursa (job #1933646) | Cod sursa (job #147444) | Cod sursa (job #3242346) | Cod sursa (job #468871)
Cod sursa(job #468871)
{$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:int64;
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.