Pagini recente » Cod sursa (job #235393) | Cod sursa (job #189598) | Cod sursa (job #1366973) | Cod sursa (job #2695582) | Cod sursa (job #468863)
Cod sursa(job #468863)
{$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.