Pagini recente » Cod sursa (job #3163179) | Cod sursa (job #567783) | Cod sursa (job #1201180) | Cod sursa (job #1630930) | Cod sursa (job #346462)
Cod sursa(job #346462)
type ref=^nod;
nod=record
as,ad:ref;
poz:longint;
end;
var bufin:array[1..65535] of byte;
a:array[1..5000000] of longint;
v,u,sf,u2:ref;
n,k,i:longint;
s:int64;
f,g:text;
begin
assign(f,'deque.in');
assign(g,'deque.out');
reset(f);rewrite(g);
settextbuf(f,bufin);
readln(f,n,k);
for i:=1 to n do
begin
readln(f,a[i]);
if v=nil then
begin
new(v);
v^.as:=nil;
v^.ad:=nil;
v^.poz:=i;
sf:=v;
end
else
begin
u:=sf;
while (u<>nil) and (a[u^.poz]>=a[i]) do
begin
u2:=u^.as;
dispose(u);
u:=u2;
end;
u2:=u;
new(u);
u^.as:=u2;
u^.ad:=nil;
u^.poz:=i;
sf:=u;
sf^.ad:=nil;
if u2=nil then
v:=u
else
u2^.ad:=u;
end;
if i>=k then
begin
while v^.poz<=i-k do
begin
u:=v^.ad;
dispose(v);
v:=u;
v^.as:=nil;
end;
inc(s,a[v^.poz]);
end;
end;
write(g,s);
close(f);close(g);
end.