var
c,a:array[1..100000] of longint;
i,n,m,aa,bb:longint;
function lowbit(n:longint):longint;
begin
exit(n and (n xor (n-1));
end;
function get(n:longint):longint;
begin get:=0;
while n>0 do begin
inc(get,c[n]);dec(n,lowbit(n));
end;
end;
procedure add(i,x:longint);
begin
while i<=n do begin
inc(c[i],x);inc(i,lowbit(i));
end;
end;
begin
read(n,m);
for i:=1 to n do read(a[i]);
for i:=1 to n do add(i,a[i]);
for i:=1 to m do begin
read(aa,bb);writeln(get(bb)-get(aa));
end;
end.
无题(树状数组模板)
最新推荐文章于 2017-08-22 15:02:53 发布