Pagini recente » Cod sursa (job #205992) | Cod sursa (job #1469846) | Cod sursa (job #1992852) | Cod sursa (job #271390) | Cod sursa (job #323936)
Cod sursa(job #323936)
var a,deque:array[1..5000000] of longint;
f,g:Text;
n,i,front,suma,back,k:longint;
bufin:array[0..1048576] of byte;
begin
assign(f,'deque.in'); reset(f);
assign(g,'deque.out'); rewrite(g);
settextbuf(f,bufin);
read(f,n,k);
for i:=1 to n do
read(f,a[i]);
suma:=0;
front:=1; back:=0;
for i:=1 to k-1 do begin
while (front<=back) and (a[i]<=a[deque[back]]) do
back:=back-1;
back:=back+1;
deque[back]:=i;
if (deque[front]+k=i) then
front:=front+1;
end;
for i:=k to n do begin
while (front<=back) and (a[i]<=a[deque[back]]) do
back:=back-1;
back:=back+1;
deque[back]:=i;
if (deque[front]+k=i) then
front:=front+1;
suma:=suma+a[deque[front]]
end;
writeln(g,suma);
close(f); close(g);
end.