Cod sursa(job #37220)

Utilizator QbyxEros Lorand Qbyx Data 24 martie 2007 18:12:53
Problema Datorii Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.35 kb
program datorii_xp;
var
  Napok: array[1..15000] of word;
  Bin: array[1..100000] of longint;
  n, x, a, b: word;
  m, r, i, j, poz: longint;
  f, g: text;

begin
  Assign(f, 'datorii.in');
  Assign(g, 'datorii.out');
  Reset(f);
  ReWrite(g);
  ReadLn(f, n, m);
  for i := 1 to n do Read(f, Napok[i]);
  for i := 1 to n do
    Bin[i] := 0;
  for i := 1 to n do
    for j := i - (i xor (i and (i - 1))) + 1 to i do
      Bin[i] := Bin[i] + Napok[j];
  for i := 1 to m do
    begin
      Read(f, x);
      Case x of
        0: begin
             ReadLn(f, a, b);
             poz := a;
             while poz <= n do
               begin
                 Bin[poz] := Bin[poz] - b;
                 poz := poz + (poz xor (poz and (poz - 1)));
               end;
           end;
        1: begin
             r := 0;
             ReadLn(f, a, b);
             poz := b;
             while poz > 0 do
               begin
                 r := r + Bin[poz];
                 poz := poz - (poz xor (poz and (poz - 1)));
               end;
             poz := a - 1;
             while poz > 0 do
               begin
                 r := r - Bin[poz];
                 poz := poz - (poz xor (poz and (poz - 1)));
               end;
             WriteLn(g,r);
           end;
      end;
    end;
  Close(f);
  Close(g);
end.