Pagini recente » Cod sursa (job #13221) | Cod sursa (job #2696399) | Cod sursa (job #3284688) | Cod sursa (job #592712) | Cod sursa (job #286647)
Cod sursa(job #286647)
// Arhiva educationala - Deque
// Pascal = shit, pierde prea mult timp la citire.
var
n, k, i, p, u : longint;
a, d : array[1..5000000] of longint;
s : int64;
f : text;
begin
assign (f, 'deque.in');
reset (f);
readln (f, n, k);
for i := 0 to n div 4-1 do
read (f, a[i shl 2 +1], a[i shl 2 + 2], a[i shl 2+3], a[i shl 2+4]);
for i:= (n shr 2) shl 2+1 to n do
read (f,a[i]);
close (f);
s := 0;
d[1] := 1;
p := 1;
u := 1;
if (k=1) then s := a[1];
for i := 2 to n do
begin
// sterge elementele mai mari din coada
while (a[i] <= a[d[u]]) and (p<=u) do
u := u - 1;
u := u + 1;
d[u] := i;
if (d[p]= i-k) then
p := p + 1;
if (i>=k) then
s := s + a[d[p]];
end;
assign (f, 'deque.out');
rewrite (f);
writeln (f, s);
close (f);
end.