fork download
  1. #include<stdio.h>
  2.  
  3. #include<iostream>
  4.  
  5. #define gc getchar
  6.  
  7. #define ll long long int
  8.  
  9. inline ll input() {
  10.  
  11. char c = gc();
  12.  
  13. while(c<'0' || c>'9') c = gc();
  14.  
  15. ll ret = 0;
  16.  
  17. while(c>='0' && c<='9') {
  18.  
  19. ret = 10 * ret + c - 48;
  20.  
  21. c = gc();
  22.  
  23. }
  24.  
  25. return ret;
  26.  
  27. }
  28.  
  29. ll maxi;
  30.  
  31. ll array[1000003];
  32.  
  33. void bt1(ll index,ll value)
  34.  
  35. {
  36.  
  37. while(index<=maxi)
  38.  
  39. {
  40.  
  41. array[index]=array[index]+value;
  42.  
  43. index=index+(index & -index);
  44.  
  45. }
  46.  
  47. }
  48.  
  49. ll qt(ll a)
  50.  
  51. {
  52.  
  53. ll sum=0;
  54.  
  55. while(a>0)
  56.  
  57. {
  58.  
  59. sum=sum+array[a];
  60.  
  61. a=a-(a & -a);
  62.  
  63. }
  64.  
  65. return sum;
  66.  
  67. }
  68.  
  69. int main()
  70.  
  71. {
  72.  
  73. using namespace std;
  74.  
  75. ll n,m,c,i,x,y,z,a,ans;
  76.  
  77. string s;
  78.  
  79. n=input();
  80.  
  81. m=input();
  82.  
  83. c=input();
  84.  
  85. maxi=n+1;
  86.  
  87. for(i=0;i<1000003;i++)
  88.  
  89. array[i]=0;
  90.  
  91. for(i=1;i<=n;i++)
  92.  
  93. bt1(i,c);
  94.  
  95. if(m>0)
  96.  
  97. while(m--)
  98.  
  99. {
  100.  
  101. cin>> s;
  102.  
  103.  
  104.  
  105. if(s[0]=='S')
  106.  
  107. {
  108.  
  109. x=input();
  110.  
  111. y=input();
  112.  
  113. z=input();
  114.  
  115. bt1(x,z);
  116.  
  117. bt1(y+1,-z);
  118.  
  119. }
  120.  
  121. else
  122.  
  123. {
  124.  
  125. a=input();
  126.  
  127. ans=qt(a);
  128.  
  129. printf("%lld\n",ans);
  130.  
  131. }
  132.  
  133. }
  134.  
  135. return 0;
  136.  
  137. }
Time limit exceeded #stdin #stdout 5s 11272KB
stdin
Standard input is empty
stdout
Standard output is empty