fork download
  1. const fi='tongdoan.inp';
  2. fo='tongdoan.out';
  3. maxn=round(1e6);
  4.  
  5. var it,a:array[0..maxn]of longint;
  6. n,q,i,res,u,v:longint;
  7.  
  8. procedure mo;
  9. begin
  10. assign(input,fi);reseT(input);
  11. assign(output,fo);rewritE(output);
  12. end;
  13.  
  14. procedure dong;
  15. begin
  16. closE(input);closE(output);
  17. end;
  18.  
  19. procedure nhap;
  20. begin
  21. readln(n,q);
  22. for i:=1 to n do read(a[i]); readln;
  23. end;
  24.  
  25. procedure sinh(l,r,i:longint);
  26. var mid:longint;
  27. begin
  28. if l=r then it[i]:=a[l]
  29. else
  30. begin
  31. mid:=(l+r) div 2;
  32. sinh(l,mid,i*2);
  33. sinh(mid+1,r,i*2+1);
  34. it[i]:=it[i*2]+it[i*2+1];
  35. end;
  36. end;
  37.  
  38. procedure update(l,r,u,v,i:longint);
  39. var mid:longint;
  40. begin
  41. if (l<=u) and (u<=r) then
  42. begin
  43. it[i]:=it[i]+v;
  44. if (u=l) and (u=r) then exit;
  45. mid:=(l+r) div 2;
  46. update(l,mid,u,v,i*2);
  47. update(mid+1,r,u,v,i*2+1);
  48. end;
  49. end;
  50.  
  51. procedure find(l,r,u,v,i:longint);
  52. var mid:longint;
  53. begin
  54. if (v<l) or (r<u) then exit;
  55. if (u<=l) and (r<=v) then
  56. begin
  57. res:=res+it[i];
  58. //writeln(l,' ',r,' ',it[i]);
  59. end
  60. else
  61. begin
  62. mid:=(l+r)div 2;
  63. find(l,mid,u,v,i*2);
  64. find(mid+1,r,u,v,i*2+1);
  65. end;
  66. end;
  67.  
  68. procedure xuat;
  69. begin
  70. res:=0;
  71. find(1,n,u,v,1);
  72. writeln(res);
  73. end;
  74.  
  75. procedure xuli;
  76. var x,y:char;
  77. begin
  78. read(x,y);
  79. readln(u,v);
  80. if x='Q' then xuat else
  81. begin
  82. v:=v-a[u];
  83. a[u]:=a[u]+v;
  84. update(1,n,u,v,1);
  85. end;
  86. end;
  87.  
  88. begin
  89. mo;
  90. nhap;
  91. sinh(1,n,1);
  92. while q>0 do
  93. begin
  94. dec(q);
  95. xuli;
  96. end;
  97. dong;
  98. end.
  99.  
Runtime error #stdin #stdout 0s 8092KB
stdin
Standard input is empty
stdout
Runtime error 2 at $080480E4
  $080480E4