fork(3) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define LSOne(S) (S & (-S))
  4. int ft[100009]={0};
  5. int N;
  6. void update(int k, int v) {
  7. for (; k <= N; k += LSOne(k)) ft[k] += v;
  8. }
  9.  
  10. void range_update(int i, int j, int v) {
  11. update(i, v);
  12. update(j + 1, -v);
  13. }
  14. long long int query(int b) {
  15. long long int sum = 0;
  16. for (; b; b -= LSOne(b)) sum += ft[b];
  17. return sum;
  18. }
  19.  
  20. int main() {
  21. // your code goes here
  22. int m;
  23. long c;
  24. cin>>N>>m>>c;
  25. range_update(1,N,c);
  26. while(m--)
  27. {
  28. char ch;
  29. cin>>ch;
  30. if(ch=='S')
  31. {
  32. int u,v,k;
  33. cin>>u>>v>>k;
  34. range_update(u,v,k);
  35. }
  36. else
  37. {
  38. int p;
  39. cin>>p;
  40. cout<<query(p)<<endl;
  41. }
  42. }
  43. return 0;
  44. }
Success #stdin #stdout 0s 3488KB
stdin
7 5 0
Q 7
S 1 7 1
Q 3
S 1 3 1
Q 3
stdout
0
1
2