Pagini recente » Cod sursa (job #2230944) | Cod sursa (job #2068636) | Cod sursa (job #2032784) | Cod sursa (job #174134) | Cod sursa (job #408512)
Cod sursa(job #408512)
{DINH QUANG DAT TIN 07-10}
{DEQUE}
{$inline on}
{$mode objfpc}
CONST
TFI='deque.in';
TFO='deque.out';
MAX=5000001;
TYPE
arr1int=array[0..MAX] of longint;
VAR
fi,fo:text;
k,top,bot,res,n:longint;
stack,a:arr1int;
PROCEDURE input;
var
i:longint;
begin
assign(fi,tfi);reset(fi);
read(fi,n,k);
for i := 1 to n do read(fi,a[i]);
close(fi);
end;
PROCEDURE init;
begin
res:=0;
bot:=1;
end;
PROCEDURE push(u:longint);inline;
begin
inc(top);
stack[top]:=u;
end;
PROCEDURE process;inline;
var
i,u:longint;
begin
for i:= 1 to k do
begin
while (a[i]<a[stack[top]]) and (top>=bot) do dec(top);
push(i);
end;
res:=a[stack[bot]];
for i:=k+1 to n do
begin
while (i-stack[bot]>=k) and (bot<top) do inc(bot);
while (a[i]<a[stack[top]]) and (top>=bot) do dec(top);
push(i);
res:=res+a[stack[bot]];
end;
end;
PROCEDURE output;
begin
assign(fo,tfo);rewrite(fo);
writeln(fo,res);
close(fo);
end;
BEGIN
input;
init;
process;
output;
END.