Cod sursa(job #323937)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 14 iunie 2009 10:45:29
Problema Deque Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.88 kb
var a,deque:array[1..5000000] of longint;
    f,g:Text;
    n,i,front,back,k:longint;
    suma:int64;
    bufin:array[0..2097152] of byte;

begin
 assign(f,'deque.in'); reset(f);
 assign(g,'deque.out'); rewrite(g);
 settextbuf(f,bufin);
 read(f,n,k);
 for i:=1 to n do
        read(f,a[i]);
 suma:=0;
 front:=1; back:=0;
 for i:=1 to k-1 do begin
        while (front<=back) and (a[i]<=a[deque[back]]) do
                back:=back-1;
        back:=back+1;
        deque[back]:=i;
        if (deque[front]+k=i) then
                front:=front+1;
 end;
 for i:=k to n do begin
        while (front<=back) and (a[i]<=a[deque[back]]) do
                back:=back-1;
        back:=back+1;
        deque[back]:=i;
        if (deque[front]+k=i) then
                front:=front+1;
        suma:=suma+a[deque[front]]
 end;
 writeln(g,suma);
 close(f); close(g);
end.