Cod sursa(job #408512)

Utilizator hungntnktpHungntnktp hungntnktp Data 3 martie 2010 05:25:27
Problema Deque Scor 25
Compilator fpc Status done
Runda Arhiva educationala Marime 1.05 kb
{DINH QUANG DAT TIN 07-10}
{DEQUE}
{$inline on}
{$mode objfpc}
CONST
 TFI='deque.in';
 TFO='deque.out';
 MAX=5000001;
TYPE
 arr1int=array[0..MAX] of longint;
VAR
 fi,fo:text;
 k,top,bot,res,n:longint;
 stack,a:arr1int;

PROCEDURE       input;
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       init;
begin
 res:=0;
 bot:=1;
end;

PROCEDURE       push(u:longint);inline;
begin
 inc(top);
 stack[top]:=u;
end;

PROCEDURE       process;inline;
var
 i,u:longint;
begin
 for i:= 1 to k do
  begin
   while (a[i]<a[stack[top]]) and (top>=bot) do dec(top);
   push(i);
  end;
 res:=a[stack[bot]];
 for i:=k+1 to n do
  begin
   while (i-stack[bot]>=k) and (bot<top) do inc(bot);
   while (a[i]<a[stack[top]]) and (top>=bot) do dec(top);
   push(i);
   res:=res+a[stack[bot]];
  end;
end;

PROCEDURE       output;
begin
 assign(fo,tfo);rewrite(fo);
  writeln(fo,res);
 close(fo);
end;

BEGIN
 input;
 init;
 process;
 output;
END.