In this

**HackerEarth Bit operations problem solution**You are given an array of size n. Initially, all the elements are zero. You are provided with queries and each query is one of the following types:- L R X: For each element in the range [L, R] such as y, set y = y|X.
- L R X: For each element in the range [L,R] like y, set y = y&X.
- L R X: For each element in the range [L,R] like y, set y = y xor x.
- L R: Print the sum of the elements in range[L,R].
- L R: Print the XOR of the elements in range [L,R].

## HackerEarth Bit operations problem solution.

`#include <bits/stdc++.h>`

using namespace std;

const int maxn = 1e6 + 17;

int n, q, a[maxn];

int main(){

ios::sync_with_stdio(0), cin.tie(0);

cin >> n >> q;

while(q--){

int t, l, r, x;

cin >> t >> l >> r;

l--;

if(t < 4){

cin >> x;

while(l < r)

if(t == 1)

a[l++] |= x;

else if(t == 2)

a[l++] &= x;

else

a[l++] ^= x;

}

else if(t == 4)

cout << accumulate(a + l, a + r, 0ll) << '\n';

else

cout << accumulate(a + l, a + r, 0, [](int a, int b){ return a ^ b; }) << '\n';

}

}

## 0 Comments