fork download
  1. /*
  2. Author : Chandan Agrawal
  3. College : Poornima College of Engg. jaipur, Raj
  4. Mail : chandanagrawal23@gmail.com
  5.  
  6. " when you are not practicing someone else is ,
  7.  and the day u meet them u will lose "
  8.  
  9. */
  10. #include<bits/stdc++.h>
  11. #include<stdio.h>
  12. using namespace std;
  13.  
  14. #define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  15. #define MAX 1000050
  16.  
  17. #define ll long long
  18. #define ld long double
  19. #define lli long long int
  20.  
  21. #define pb push_back
  22. #define INF 1000000000000
  23. #define mod 1000000007
  24.  
  25. // trignometric function always give value in Radians only
  26. #define PI acos(-1) //3.1415926535897932384626433832795028
  27. #define dsin(degree) sin(degree*(PI/180.0))
  28. #define dcos(degree) cos(degree*(PI/180.0))
  29. #define dtan(degree) tan(degree*(PI/180.0))
  30.  
  31. #define rsin(radian) sin(radian)
  32. #define rcos(radian) cos(radian)
  33. #define rtan(radian) tan(radian)
  34.  
  35. #define mem0(a) memset(a,0,sizeof(a))
  36. #define mem1(a) memset(a,-1,sizeof(a))
  37. #define memf(a) memset(a,false,sizeof(a))
  38.  
  39. #define loop(i,n) for (lli i = 0; i < n; i++)
  40. #define FOR(i,a,b) for (lli i = a; i < b; i++)
  41.  
  42. #define all(v) v.begin(),v.end()
  43. #define rall(v) v.rbegin(),v.rend()
  44. #define makeuniq(v) v.resize(unique(all(v)) - v.begin()); //only uniq element in vector after this
  45. #define sz(x) int(x.size())
  46. #define F first
  47. #define S second
  48.  
  49. #define mii map<lli,lli>
  50.  
  51. #define pii pair<lli,lli>
  52.  
  53. #define vi vector<lli>
  54. #define vvi vector<vi>
  55. #define vpi vector<pii>
  56. #define vbool vector<bool>
  57.  
  58. #define seti set<lli>
  59.  
  60. #define gcd(a,b) __gcd((a),(b))
  61. #define lcm(a,b) (a/gcd(a,b))*b
  62. #define abs(x) ((x < 0)?-(x):x)
  63.  
  64. #define endl '\n'
  65.  
  66. template <typename Head>
  67. void print(Head&& head)
  68. {
  69. cout<<head<<endl;
  70. }
  71. template <typename Head, typename... Tail>
  72. void print(Head&& head, Tail... tail)
  73. {
  74. cout<<head<<" ";
  75. print(tail...);
  76. }
  77.  
  78. #define scanarr(a,n) for(lli i=0;i<n;i++) cin>>a[i];
  79. #define scanvec(a,n) for(lli i=0;i<n;i++){ lli x ; cin>>x; a.pb(x);}
  80.  
  81. #define printarr(a,n) for(lli i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl;
  82. #define printvec(vec) for(auto xt : vec) cout<<xt<<" "; cout<<"\n";
  83.  
  84. #define FD(N) fixed<<setprecision(N)
  85.  
  86. #define deb(x) cout<<#x<<" "<<x<<endl;
  87.  
  88. /*
  89. 1D vector - vi dp(n,value);
  90. 2D vector - vvi dp(n,vi(n,value));
  91. */
  92.  
  93. // chandan1,2
  94. void chandan1(){int y=1;return;}
  95. void chandan2(){
  96. loop(i,10){
  97. lli x=1;
  98. }
  99. return(chandan1());
  100. }
  101.  
  102.  
  103. //---------------------------------------------------BIT_TYPE2_----------------------------------------------------------------------
  104.  
  105. // range update and range query
  106. //https://k...content-available-to-author-only...s.com/2013/12/02/range-updates-with-bit-fenwick-tree/
  107.  
  108.  
  109. lli BIT1[MAX], BIT2[MAX];
  110. lli a[MAX], n , b[MAX];
  111.  
  112. void update(lli *BIT , lli x , lli val)
  113. {
  114. while(x<MAX)
  115. {
  116. BIT[x] += val;
  117. x += (x&-x);
  118. }
  119. }
  120.  
  121. lli query(lli *BIT , lli x)
  122. {
  123. lli sum = 0;
  124. while(x>0)
  125. {
  126. sum += BIT[x];
  127. x -= (x&-x);
  128. }
  129.  
  130. return sum;
  131. }
  132.  
  133. // Range update: Adds v to each element in [i...j]
  134. void range_update(lli i, lli j , lli val)
  135. {
  136. update(BIT1, i, val);
  137. update(BIT1, j + 1, -val);
  138. update(BIT2, i, val * (i - 1));
  139. update(BIT2, j + 1, -val * j);
  140. }
  141.  
  142.  
  143. // Range query: Returns the sum of all elements in [1...b]
  144. lli query(lli i) {
  145. return query(BIT1, i) * i - query(BIT2, i);
  146. }
  147.  
  148. // Range query: Returns the sum of all elements in [i...j]
  149. lli range_query(lli i, lli j) {
  150. return query(j) - query(i - 1);
  151. }
  152.  
  153. //--------------------------------------------------BIT------------------------------------------------------------------------
  154.  
  155. void coordinate_compress(lli a[] , lli n)
  156. {
  157. lli temp[n];
  158.  
  159. loop(i,n)
  160. temp[i] = a[i];
  161.  
  162. sort(temp, temp + n);
  163.  
  164. loop(i,n)
  165. a[i] = lower_bound(temp, temp + n, a[i]) - temp + 1;
  166. }
  167.  
  168. int main(){
  169. fastio
  170. lli t=1;
  171. //cin>>t;
  172. chandan2();
  173. while(t--) {
  174. lli m;
  175. cin>>n>>m;
  176. FOR(i,1,n+1)
  177. {
  178. cin>>a[i];
  179. range_update(i,i,a[i]);
  180. }
  181. loop(i,m)
  182. {
  183. lli type;
  184. cin>>type;
  185. if(type==1)
  186. {
  187. lli l,r,val;
  188. cin>>l>>r>>val;
  189. range_update(l,r,val);
  190. }
  191.  
  192. if(type==2)
  193. {
  194. lli l,r,val;
  195. cin>>l>>r>>val;
  196. print("type 2 query What should I write ?");
  197. /*
  198.  
  199.   What should I write ?
  200.  
  201.   */
  202. }
  203.  
  204. if(type==3)
  205. {
  206. lli l,r;
  207. cin>>l>>r;
  208. print(range_query(l,r));
  209. }
  210. }
  211.  
  212. mem0(BIT1);
  213. mem0(BIT2);
  214. mem0(a);
  215. }
  216. return 0;
  217. }
Success #stdin #stdout 0.01s 27084KB
stdin
6 5
2 3 1 1 5 3
3 3 5
1 2 4 2
3 3 5
2 2 4 5
3 3 5
stdout
7
11
type 2 query What should I write ?
11