Cod sursa(job #784509)

Utilizator hungntnktpHungntnktp hungntnktp Data 6 septembrie 2012 10:40:57
Problema Deque Scor 60
Compilator fpc Status done
Runda Arhiva educationala Marime 1.38 kb
Const
        tfi     =       'deque.in';
        tfo     =       'deque.out';
        Nmax    =       10000000;
Type
        arr1    =       array[1..Nmax] of longint;
Var
        fi,fo         :       text;
        N,K,f,r       :       longint;
        res           :       int64;
        A,st          :       arr1;
(*------------------------------------*)
Procedure nhap;
  var
        i       :       longint;
  begin
        assign(fi,tfi); reset(fi);
             read(fi,N,K);
             for i := 1 to n do
                read(fi,A[i]);
        close(fi);
  end;
(*------------------------------------*)
Procedure push(i  : longint);
  begin
     inc(r);
     st[r] := i;
  end;
(*------------------------------------*)
Procedure xuly;
 var
        i,tg  :       longint;
 begin
        f := 1;
        r := 0;
        For i := 1 to n do
           begin
              while (f <= r) and (A[i] <= A[st[r]]) do dec(r);
              while (f <= r) and (i - st[f] + 1 > k) do inc(f);
              push(i);
              if i >= k then res := res + A[st[f]];
           end;
 end;
(*------------------------------------*)
Procedure inkq;
 begin
    assign(fo,tfo); rewrite(fo);
       write(fo,res);
    close(fo);
 end;
(*------------------------------------*)
(*------------------------------------*)
BEGIN
   nhap;
   xuly;
   inkq;
END.