Cod sursa(job #780747)

Utilizator hungntnktpHungntnktp hungntnktp Data 21 august 2012 11:01:04
Problema Arbori indexati binar Scor 30
Compilator fpc Status done
Runda Arhiva educationala Marime 1.94 kb
Const
        tfi     =       'aib.in';
        tfo     =       'aib.out';
Type
        arr1    =       array[1..100001] of longint;
Var
        fi,fo   :       text;
        N,M     :       longint;
        T       :       arr1;
(*--------------------------------------*)
Procedure update(i, val : longint);
  begin
     while i<= n do
       begin
          T[i] := T[i] + val;
          i := i + i and (-i);
       end;
  end;
(*--------------------------------------*)
Function get(i : longint): int64;
  begin
    Get := 0;
    while i > 0 do
      begin
         get := get +  T[i];
         i := i - i and (-i);
      end;
  end;
(*--------------------------------------*)
function find(x : longint): longint;
  var
     i : longint;
  begin
     for i := 1 to n do
        if get(i) = x then exit(i);
     exit(-1);
  end;
(*--------------------------------------*)
Procedure nhap;
  var
    i,x,k,j,val,s,f :       longint;
  begin
     assign(fo,tfo); rewrite(fo);
     assign(fi,tfi); reset(fi);
       read(fi,N,M);
       for i := 1 to n do
          begin
             read(fi,x);
             update(i,x);
          end;
       For i := 1 to M do
         begin
            read(fi,k);
            if k = 0 then
               begin
                  read(fi,j,val);
                  update(j,val);
               end
               else if k = 1 then
                  begin
                     read(fi,s,f);
                     writeln(fo,get(f)-get(s-1));
                  end
                  else if k = 2 then
                    begin
                      read(fi,val);
                      writeln(fo,find(val));
                    end;
         end;
     close(fi); close(fo);
  end;
(*--------------------------------------*)
(*--------------------------------------*)
(*--------------------------------------*)
(*--------------------------------------*)
BEGIN
   nhap;
END.