比赛 十一中校庆欢乐赛 评测结果 C
题目名称 求和问题 最终得分 0
用户昵称 黑駒 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2014-10-23 19:49:58
显示代码纯文本
var n,m,i,j,k,l,r:longint;
  a,b:array[1..10001] of longint;

function lowbit(x:longint):longint;
begin
  exit(x and (-x));
end;

procedure add(p,w:longint);//在p位置加w
begin
  while p<= n  do begin
    inc(b[p],w);
    inc(p,lowbit(p));
  end;
end;

function sum(p:longint):longint;//求前p项和
begin
  sum:=0;
  while p>= 1 do begin
   inc(sum,b[p]);
	dec(p,lowbit(p));
  end;
end;

procedure main;
begin
  fillchar(a,sizeof(a),0);
  readln(n);
  for i:=1  to n do read(a[i]);
  for i:=1 to n do add(i,a[i]);
  {for i:=1 to n do writeln(a[i]);}
  readln(m);
  for i:=1 to m do
  begin
    readln(l,r);
	writeln(sum(r)-sum(l-1));
  end;
end;

begin
  assign(input,'sum.in');
  assign(output,'sum.out');
  reset(input);
  rewrite(output);
  main;
  close(input);
  close(output);
end.