Cod sursa(job #345697)
| Utilizator | Data | 4 septembrie 2009 11:53:47 | |
|---|---|---|---|
| Problema | Deque | Scor | 60 |
| Compilator | fpc | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
{$S-}
var a,deque:array[1..5000000]of LONGINT;
suma:INT64;
i,front,back,k,n:LONGINT;
begin
assign(input,'deque.in');
reset(input);
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);
end.