Cod sursa(job #239753)
Utilizator | Data | 5 ianuarie 2009 18:59:55 | |
---|---|---|---|
Problema | Deque | Scor | 60 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
var f,g:text;
a,c:array[1..5000010] of longint;
n,i,dr,st,k:longint;
s:int64;
begin
assign(f,'deque.in');
reset(f);
readln(f,n,k);
for i:=1 to n do
readln(f,a[i]);
st:=1;
dr:=0;
for i:=1 to n do
begin
while (st<=dr) and (a[i]<=a[c[dr]]) do dr:=dr-1;
dr:=dr+1;
c[dr]:=i;
if c[st]=i-k then st:=st+1;
if i>=k then s:=s+a[c[st]];
end;
assign(g,'deque.out');
rewrite(g);
writeln(g,s);
close(f);
close(g);
end.