Cod sursa(job #131973)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 4 februarie 2008 20:24:16
Problema Datorii Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.04 kb
program Datorii;
const nmax=15001;
var c:array[1..nmax]of longint;
    n,x,y,z:integer;
    m,i:longint;
    f,g:text;
procedure update(poz,val:integer);
var nr,k:integer;
begin
k:=poz;
while (k<=n) do begin
                nr:=0;
                while (1 shl nr)and k =0 do inc(nr);
                c[k]:=c[k]+val;
                k:=k+(1 shl nr);
                end;
end;
function query(ld:integer):longint;
var nr,k:integer;
    s:longint;
begin
k:=ld;s:=0;
while (k>0) do begin
               s:=s+c[k];
               nr:=0;
               while (1 shl nr)and k =0 do inc(nr);
               k:=k-(1 shl nr);
               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 c[i]:=0;
for i:=1 to n do begin read(f,x); update(i,x); end;
for i:=1 to m do begin
                 readln(f,x,y,z);
                 if x=0 then update(y,-z)
                        else writeln(g,query(z)-query(y-1));
                 end;
close(f);close(g);
end.