Cod sursa(job #50858)

Utilizator unknown_identifierDogaru Dragos unknown_identifier Data 9 aprilie 2007 10:23:42
Problema Datorii Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.62 kb
program tribute_to_mars;
type vect=array[1..15000] of longint;
var f,g:text;
    c:vect;
    n,m,ad,i,poz,bit,x,a,b,sum1,sum2:longint;
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,ad);
            poz:=i;
            while poz<=n do begin
              c[poz]:=c[poz]+ad;
              bit:=(poz and (poz-1)) xor poz;
              poz:=poz+bit;
              end;
                        end;
for i:=1 to m do begin
         read(f,x,a,b);
               if x=1 then begin
                           sum1:=0;
                           poz:=b;
                            while poz>0 do begin
                                 sum1:=sum1+c[poz];
                                 bit:=(poz and (poz-1)) xor poz;
                                 poz:=poz-bit;
                                 end;
                           sum2:=0;
                           poz:=a-1;
                           while poz>0 do begin
                                 sum2:=sum2+c[poz];
                                 bit:=(poz and (poz-1)) xor poz;
                                 poz:=poz-bit;
                                 end;
                           writeln(g,sum1-sum2);
                           end
                           else begin

            ad:=-b;
            poz:=a;
            while poz<=n do begin
              c[poz]:=c[poz]+ad;
              bit:=(poz and (poz-1)) xor poz;
               poz:=poz+bit;
              end;
                          end;

         end;
close(f); close(g);
end.