fork(2) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define MAX 1000010
  4. long tree[MAX],c;
  5. void add(int index,int value)
  6. {
  7. while(index<=MAX)
  8. {
  9. tree[index]=value;
  10. index+=(index&-index);
  11. }
  12. }
  13. long sum(int index)
  14. {
  15. long sum=0;
  16. while(index>0)
  17. {
  18. sum+=tree[index];
  19. index=index-(index&-index);
  20. }
  21. return sum;
  22. }
  23. int main() {
  24. // your code goes here
  25. int n,m;
  26. long c;
  27. cin>>n>>m>>c;
  28. fill_n(tree,n+1,c);
  29. while(m--)
  30. {
  31. char type;
  32. cin>>type;
  33. if(type=='Q')
  34. {
  35. int p;
  36. cin>>p;
  37. cout<<(long)(sum(p)-sum(p-1))<<"\n";
  38. }
  39. else if(type=='S')
  40. {
  41. int u,v,k;
  42. cin>>u>>v>>k;
  43. for(int i=u;i<=v;i++)
  44. add(i,k);
  45. }
  46. }
  47. return 0;
  48. }
Success #stdin #stdout 0s 7048KB
stdin
7 5 2
Q 7
S 1 7 1
Q 3
S 1 3 1
Q 3
stdout
2
1
1