Cod sursa(job #197480)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 4 iulie 2008 13:21:25
Problema Datorii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.08 kb
var v:array[1..20000]of longint;
    n,i,j,k,l,m,a,b,c,s1,s2:longint;
    f1,f2:text;
begin
   assign(f1,'datorii.in');
   assign(f2,'datorii.out');
   reset(f1);
   rewrite(f2);
   readln(f1,n,m);
   for i:=1 to n do
   begin
   read(f1,k);
   l:=i;
   while l<=n do
   begin
   v[l]:=v[l]+k;
   l:=(l or(l-1))+1;
   end;
   end;
   for i:=1 to m do
   begin
   read(f1,a,b,c);
   if a=0 then begin while b<=n do
                     begin
                     v[b]:=v[b]-c;
                     b:=(b or(b-1))+1;
                     end;
               end
          else begin s1:=0;
                     s2:=0;
                     b:=b-1;
                     while b>0 do
                     begin
                     s1:=s1+v[b];
                     b:=b and(b-1);
                     end;
                     while c>0 do
                     begin
                     s2:=s2+v[c];
                     c:=c and(c-1);
                     end;
                     writeln(f2,s2-s1);
               end;
   end;
   close(f1);
   close(f2);
end.