fork download
  1. #include <bits/stdc++.h>
  2.  
  3. #define fio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
  4.  
  5. #define int unsigned long long
  6.  
  7. #define endl '\n'
  8.  
  9. #define pb push_back
  10.  
  11. #define debug(x) cout<<#x<<" "<<x<<endl;
  12.  
  13. const int mod = 1e9+7;
  14.  
  15. const int MAX = 2e5+7;
  16.  
  17. const int INF = INT_MAX;
  18.  
  19. const double pi = 3.141592653589793238460;
  20.  
  21. using namespace std;
  22.  
  23.  
  24.  
  25. bool is_pal (string s){
  26.  
  27. return equal(s.begin(), s.begin() + s.size()/2, s.rbegin()) ? 1 : 0;
  28.  
  29. }
  30.  
  31.  
  32.  
  33. int power (int x , int y){
  34.  
  35. if(y==0){
  36.  
  37. return 1;
  38.  
  39. }
  40.  
  41. if(y&1){
  42.  
  43. return x*power(x,y/2)%mod*power(x,y/2)%mod;
  44.  
  45. }
  46.  
  47. return power(x,y/2)%mod*power(x,y/2)%mod;
  48.  
  49. }
  50.  
  51.  
  52.  
  53. int modInv (int x){
  54.  
  55. return power(x,mod-2);
  56.  
  57. }
  58.  
  59.  
  60.  
  61. int fact (int n){
  62.  
  63. int f =1;
  64.  
  65. for(int i=0; i<n; i++){
  66.  
  67. f=(f*(i+1))%mod;
  68.  
  69. }
  70.  
  71. return f;
  72.  
  73. }
  74.  
  75.  
  76.  
  77. int max (int x, int y){
  78.  
  79. return x>y ? x : y;
  80.  
  81. }
  82.  
  83.  
  84.  
  85. int min (int x, int y){
  86.  
  87. return x<y ? x : y;
  88.  
  89. }
  90.  
  91.  
  92.  
  93. int lcm (int x, int y){
  94.  
  95. return (x*y)/__gcd(x,y);
  96.  
  97. }
  98.  
  99.  
  100.  
  101. bool prime[MAX];
  102.  
  103.  
  104.  
  105. void SieveOfEratosthenes(int n){
  106.  
  107.  
  108.  
  109. memset(prime, true, sizeof(prime));
  110.  
  111. for (int p=2; p*p<=n; p++){
  112.  
  113. if (prime[p] == true){
  114.  
  115. for (int i=p*p; i<=n; i += p)
  116.  
  117. prime[i] = false;
  118.  
  119. }
  120.  
  121. }
  122.  
  123. }
  124.  
  125.  
  126.  
  127. int tree[4*MAX];
  128.  
  129. int lazy[4*MAX];
  130.  
  131.  
  132.  
  133. void build(int a[], int v, int tl, int tr, int tree[], int lazy[]) {
  134.  
  135. lazy[v]=0;
  136.  
  137. if (tl == tr) {
  138.  
  139. tree[v] = a[tl];
  140.  
  141. } else {
  142.  
  143. int tm = (tl + tr) / 2;
  144.  
  145. build(a,v*2,tl,tm,tree,lazy);
  146.  
  147. build(a,v*2+1,tm+1,tr,tree,lazy);
  148.  
  149. tree[v] = (tree[v*2] ^ tree[v*2+1]);
  150.  
  151. }
  152.  
  153. }
  154.  
  155.  
  156.  
  157. void push(int v, int tree[], int lazy[]) {
  158.  
  159. tree[v*2] += lazy[v];
  160.  
  161. lazy[v*2] += lazy[v];
  162.  
  163. tree[v*2+1] += lazy[v];
  164.  
  165. lazy[v*2+1] += lazy[v];
  166.  
  167. lazy[v] = 0;
  168.  
  169. }
  170.  
  171.  
  172.  
  173. void updateADDEND(int v, int tl, int tr, int l, int r, int addend, int tree[], int lazy[]) {
  174.  
  175. if (l > r)
  176.  
  177. return;
  178.  
  179. if (l == tl && tr == r) {
  180.  
  181. tree[v] += addend;
  182.  
  183. lazy[v] += addend;
  184.  
  185. } else {
  186.  
  187. push(v,tree,lazy);
  188.  
  189. int tm = (tl + tr) / 2;
  190.  
  191. updateADDEND(v*2, tl, tm, l, min(r, tm), addend,tree,lazy);
  192.  
  193. updateADDEND(v*2+1, tm+1, tr, max(l, tm+1), r, addend,tree,lazy);
  194.  
  195. tree[v] = min(tree[v*2], tree[v*2+1]);
  196.  
  197. // this min is completely immaterial and is same as build ones
  198.  
  199. }
  200.  
  201. }
  202.  
  203.  
  204.  
  205. int queryMIN(int v, int tl, int tr, int l, int r) {
  206.  
  207. if (l > r)
  208.  
  209. return INF;
  210.  
  211. if (l <= tl && tr <= r)
  212.  
  213. return tree[v];
  214.  
  215. push(v, tree, lazy);
  216.  
  217.  
  218.  
  219. int tm = (tl + tr) / 2;
  220.  
  221. return min(queryMIN(v*2, tl, tm, l, min(r, tm)),
  222.  
  223. queryMIN(v*2+1, tm+1, tr, max(l, tm+1), r));
  224.  
  225. }
  226.  
  227.  
  228.  
  229. int queryMAX(int v, int tl, int tr, int l, int r) {
  230.  
  231. if (l > r)
  232.  
  233. return -INF;
  234.  
  235. if (l <= tl && tr <= r)
  236.  
  237. return tree[v];
  238.  
  239. push(v, tree, lazy);
  240.  
  241.  
  242.  
  243. int tm = (tl + tr) / 2;
  244.  
  245. return max(queryMAX(v*2, tl, tm, l, min(r, tm)),
  246.  
  247. queryMAX(v*2+1, tm+1, tr, max(l, tm+1), r));
  248.  
  249. }
  250.  
  251.  
  252.  
  253. void updatePOINT(int v, int tl, int tr, int pos, int new_val) {
  254.  
  255. if (tl == tr) {
  256.  
  257. tree[v] = new_val;
  258.  
  259. } else {
  260.  
  261. int tm = (tl + tr) / 2;
  262.  
  263. if (pos <= tm)
  264.  
  265. updatePOINT(v*2, tl, tm, pos, new_val);
  266.  
  267. else
  268.  
  269. updatePOINT(v*2+1, tm+1, tr, pos, new_val);
  270.  
  271. tree[v] = (tree[v*2] + tree[v*2+1]);
  272.  
  273. }
  274.  
  275. }
  276.  
  277. int rangeSUM(int v, int tl, int tr, int l, int r) {
  278. if (l > r)
  279. return 0;
  280. if (l == tl && r == tr) {
  281. return tree[v];
  282. }
  283. int tm = (tl + tr) / 2;
  284. return rangeSUM(v*2, tl, tm, l, min(r, tm))
  285. ^ rangeSUM(v*2+1, tm+1, tr, max(l, tm+1), r);
  286. }
  287.  
  288.  
  289. int getVALUE(int v, int tl, int tr, int pos) {
  290. if (tl == tr) {
  291. return tree[v];
  292. }
  293. push(v, tree, lazy);
  294. int tm = (tl + tr) / 2;
  295. if (pos <= tm)
  296. return getVALUE(v*2, tl, tm, pos);
  297. else
  298. return getVALUE(v*2+1, tm+1, tr, pos);
  299. }
  300.  
  301.  
  302.  
  303. void solve(void){
  304.  
  305. int n, q;
  306.  
  307. cin>>n>>q;
  308.  
  309.  
  310.  
  311. int a[MAX]={0};
  312.  
  313.  
  314.  
  315. for(int i = 1; i <= n; i++)
  316.  
  317. cin>>a[i];
  318.  
  319. build (a, 1, 1, n, tree, lazy);
  320.  
  321.  
  322.  
  323. while(q--){
  324.  
  325. int qtype, l, r;
  326.  
  327. cin>>qtype;
  328.  
  329. if(qtype&1){
  330. int A, B, U;
  331. cin>>A>>B>>U;
  332.  
  333.  
  334.  
  335. }
  336.  
  337. else{
  338. int K;
  339. cin>>K;
  340.  
  341. }
  342.  
  343. }
  344.  
  345.  
  346.  
  347. }
  348.  
  349. signed main() {
  350.  
  351. fio;
  352.  
  353. int t = 1;
  354.  
  355. // cin>>t;
  356.  
  357. while(t--)
  358.  
  359. solve();
  360.  
  361.  
  362.  
  363. return 0;
  364.  
  365. }
Runtime error #stdin #stdout 0s 4852KB
stdin
Standard input is empty
stdout
Standard output is empty