func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 0x3f3f3f3f;   const double EPS = 1e-10;   const int MOD = 1000000007;   const int MAXN = 110000;   const double PI = acos(-1.0);   template <class T>   T abs(T x) {     return x < 0 ? -x : x;   }   int num, kase;   int flag[22][MAXN];   long long fun() {     long long ret = 0;     for (int index = 0; index < (21); ++index) {       long long cnt = 0, t = 0;       for (int i = (1); i <= (num + 1); ++i) {         if (flag[index][i] == 1)           cnt++;         else {           t += ((cnt * cnt + cnt) >> 1);           cnt = 0;         }       }       ret += (1 << index) * t;     }     return ret;   }   void findlr(int* f, int n, int& l, int& r) {     int i = n - 1;     while (f[i] == 1) i--;     l = i + 1;     i = n + 1;     while (f[i] == 1) i++;     r = i - 1;   }   int main() {     int t, p;     while (~scanf( %d%d , &num, &kase)) {       memset(flag, 0, sizeof(flag));       for (int i = (1); i <= (num); ++i) {         scanf( %d , &t);         p = 1;         for (int ind = 0; ind < (21); ++ind) {           flag[ind][i] = ((t & p) > 0);           p <<= 1;         }       }       long long ans = fun();       int a, b, l, r;       for (int tt = 0; tt < (kase); ++tt) {         scanf( %d%d , &a, &b);         for (int ind = 0; ind < (21); ++ind) {           p = 1 << ind;           if (((b & p) > 0) != flag[ind][a]) {             findlr(flag[ind], a, l, r);             long long lenl = a - l, lenr = r - a;             ans += (1 - flag[ind][a] * 2) * (1 << ind) *                    (lenl * lenr + lenl + lenr + 1);             flag[ind][a] = !flag[ind][a];           }         }         cout << ans << endl;       }     }     return 0;   }   