Cod sursa(job #255195)

Utilizator MihaiBunBunget Mihai MihaiBun Data 8 februarie 2009 20:04:39
Problema Cuburi2 Scor 5
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.13 kb
program bigbug;
var f,g:text;
    a:array[1..250000] of longint;
    s,sum:array[0..250000] of int64;
    n,m,i,j,x,y,indice,li,ls,mij:longint;
    min,p:int64;

begin
  assign(f,'cuburi2.in');
  assign(g,'cuburi2.out');
  rewrite(g);
  reset(f);
  read(f,n,m);
  s[0]:=0;
  sum[0]:=0;
  for i:=1 to n do begin
                    read(f,a[i]);
                    s[i]:=s[i-1]+a[i];
                    sum[i]:=sum[i-1]+a[i]*i
                   end;
  for j:=1 to m do
    begin
     read(f,x,y);
     min:=9223372036854775807;
     li:=x;
     ls:=y;
     mij:=(li+ls) div 2;
     while li<ls do
     begin
        if (i*(s[i]-s[x-1])-(sum[i]-sum[x-1]))<(sum[y]-sum[i]-i*(s[y]-s[i]))
             then li:=mij+1
             else ls:=mij-1;
        mij:=(li+ls) div 2;
     end;
     for i:=mij-20 to mij+20 do
     if (i>0)and(i<=n) then
     begin
     p:=i*(s[i]-s[x-1])-(sum[i]-sum[x-1])+sum[y]-sum[i]-i*(s[y]-s[i]);
     if p<min then begin
                     min:=p;
                     indice:=i
                   end;
     end;
     writeln(g,indice,' ',min);
  end;
  close(f);
  close(g);
end.