Cod sursa(job #197453)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 4 iulie 2008 11:38:38
Problema Datorii Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.97 kb
var v : array[1..15000*4+10] of integer;
    i,j,n,m,op,a,b,sum : longint;
    f,g : text;
procedure add(nod,p,u,t,s : integer);
var m : integer;
begin
  inc(v[nod],s);
    if p<u then
    begin
      m:=(p+u)div 2;
        if t<=m then add(2*nod,p,m,t,s)
        else add(2*nod+1,m+1,u,t,s);
    end;
end;

procedure query(nod,p,u,x,y : integer);
var m : integer;
begin
  if (x<=p)and(u<=y)then inc(sum,v[nod])
  else
  begin
    m:=(p+u)div 2;
      if x<=m then query(2*nod,p,m,x,y);
      if y>m then query(2*nod+1,m+1,u,x,y);
  end;
end;

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