Cod sursa(job #239461)

Utilizator FllorynMitu Florin Danut Flloryn Data 4 ianuarie 2009 20:36:14
Problema Datorii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.31 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.