Cod sursa(job #197466)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 4 iulie 2008 12:30:00
Problema Datorii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.72 kb
var v:array[1..15010]of longint;
    n,x,y,op,m,i:longint;
    f,g:text;
procedure add(k,s:integer);
begin
    while (k<=n) do
    begin
      v[k]:=v[k]+s;
      k:=(k or (k-1))+1;
   end;
end;

function query(k:longint):longint;
var s:longint;
begin
  s:=0;
    while (k>0) do
    begin
      s:=s+v[k];
      k:=k and (k-1);
    end;
  query:=s;
end;

begin
  assign(f,'datorii.in');reset(f);
  assign(g,'datorii.out');rewrite(g);
  readln(f,n,m);
    for i:=1 to n do v[i]:=0;
    for i:=1 to n do
    begin
      read(f,x);
      add(i,x);
    end;
  for i:=1 to m do
  begin
    read(f,op,x,y);
      if op=0 then add(x,-y)
      else writeln(g,query(y)-query(x-1));
  end;
  close(g);
end.