Cod sursa(job #591949)

Utilizator ion_calimanUAIC Ion Caliman ion_caliman Data 26 mai 2011 01:17:57
Problema Deque Scor 60
Compilator fpc Status done
Runda Arhiva educationala Marime 0.66 kb
var     a:array[1..5000000,1..22] of longint;
        n,k,i,j,p:longint;
        s:int64;
        f,g:text;

function min(a,b:int64):int64;
begin
  if a<b then min:=a else min:=b;
end;

begin
  assign(f,'deque.in');
  assign(g,'deque.out');
  reset(f);
  rewrite(g);
  readln(f,n,k);
  for i:=1 to n do
    readln(f,a[i,0]);
  p:=0;
  while 1 shl (p+1)<=n do inc(p);
  for i:=1 to p do
  for j:=1 to n do
    if j+(1 shl (i-1))>n then break else
      a[j,i]:=min(a[j,i-1],a[j+(1 shl (i-1)),i-1]);

  p:=0;
  while 1 shl (p+1)<=k do inc(p);
  s:=0;
  for i:=1 to n-k+1 do
    s:=s+min(a[i,p],a[i+k-(1 shl p),p]);
  writeln(g,s);
  close(g);
end.