fork download
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. using namespace std;
  5.  
  6. long long int num;
  7. long long int bit[1000001]={0};
  8.  
  9.  
  10. long long int sum(long long int b)
  11. {
  12. long long int sum = 0;
  13. for (; b; b -= b&(-b))
  14. sum += bit[b];
  15. return sum;
  16. }
  17.  
  18. long long int sum(long long int a, long long int b)
  19. {
  20. return sum(b) - (a == 1 ? 0 : sum(a - 1));
  21. }
  22.  
  23. void update( long long int idx, long long int val)
  24. {
  25. while(idx<=num){
  26. bit[idx]+=val;
  27.  
  28. idx+=(idx&(-idx));
  29. }
  30. }
  31.  
  32. void updatesub( long long int idx, long long int val)
  33. {
  34. while(idx<=num){
  35. bit[idx]-=val;
  36.  
  37. idx+=(idx&(-idx));
  38. }
  39. }
  40.  
  41.  
  42. int main()
  43. {
  44. int e,i;
  45. long long int s=0,m,c;
  46. cin>>num>>m;
  47.  
  48. for(i=1;i<=num;i++)
  49. {
  50. cin>>e;
  51. update(i,e);
  52. }
  53. while(m--)
  54. {
  55. long long int low,up;
  56. char k;
  57. cin>>k>>low>>up;
  58. if(k=='S')
  59. {
  60. low=low+1; up=up+1;
  61. cout<<sum(low,up)<<endl;
  62. }
  63. else if(k=='G')
  64. { low=low+1;
  65. update(low,up);
  66. }
  67. else if(k=='T')
  68. { low=low+1;
  69. updatesub(low, (up));
  70. }
  71. }
  72. return 0;
  73. }
Success #stdin #stdout 0s 10552KB
stdin
5 3
1000 1002 1003 1004 1005
S 0 2
G 0 3
S 0 2
stdout
3005
3008