记录编号 126755 评测结果 EEEEEEEEEEEEEEEA
题目名称 数列操作A 最终得分 6
用户昵称 Gravatar稠翼 是否通过 未通过
代码语言 Pascal 运行时间 1.308 s
提交时间 2014-10-14 10:24:00 内存使用 4.74 MiB
显示代码纯文本
program cogs264;
type xds=record
     l,r,lc,rc,k,d:longint;
     end;
var
   a:array[0..200000]of xds;
   n,m,i,l,r:longint;
   c:char;
procedure init;
begin
     assign(input,'shulie.in');reset(input);
     assign(output,'shulie.out');rewrite(output);
end;
procedure build(l,r,t:longint);
begin
     a[t].l:=l;a[t].r:=r;a[t].k:=(l+r)>>1;
     if l=r then
     begin
          read(a[t].d);exit;
     end;
     inc(m);a[t].lc:=m;build(l,a[t].k,m);
     inc(m);a[t].rc:=m;build(a[t].k+1,r,m);
     a[t].d:=a[a[t].lc].d+a[a[t].rc].d;
end;
procedure deal(t:longint);
begin
     inc(a[t].d,r);
     if(a[t].l=a[t].r)and(a[t].l=l) then exit;
     if a[t].k>=l then deal(a[t].lc) else deal(a[t].rc);
end;
function find(t:longint):longint;
var
   sum:longint;
begin
     if(a[t].l>=l)and(a[t].r<=r) then exit(a[t].d);
     sum:=0;
     if a[t].k>=l then sum:=sum+find(a[t].lc);
     if a[t].k<r then  sum:=sum+find(a[t].rc);
     exit(sum);
end;
procedure main;
begin
     readln(n);
     m:=1;
     if n>0 then build(1,n,1);
     readln(m);
     for i:=1 to m do
     begin
          readln(c,c,c,l,r);
          if c='D' then deal(l) else writeln(find(l));
     end;
end;
begin
     init;
     main;
     close(output);
end.//complete by chouyi 20141014