Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include<algorithm>
  4. #include <cmath>
  5. #include <iomanip>
  6. #include <map>
  7. #include <set>
  8. #include <string>
  9.  
  10. using namespace std;
  11.  
  12.  
  13. bool cmp(vector<int> a, vector<int> b) {
  14.     return (((a[0] / 350) < (b[0] / 350)) || (((a[0] / 350) == (b[0] / 350)) && (a[1] < b[1])));
  15. }
  16.  
  17. int main() {
  18.     long long n, m, k, a, l = 0,r=0,ans=0;
  19.     cin >> n >> m >> k;
  20.     vector<int> cmt((1<<20),0);
  21.     vector<int > p(n + 1, 0);
  22.     vector<vector<int> > q(m, vector<int>(3));
  23.     vector<int> otv(m);
  24.     for (int i = 0; i < n; i++) {
  25.         cin >> a;
  26.         p[i + 1] = (p[i] ^ a);
  27.     }
  28.     cmt[0] = 1;
  29.     for (int i = 0; i < m; i++) {
  30.         cin >> q[i][0] >> q[i][1];
  31.         q[i][0]--;
  32.         q[i][1]++;
  33.         q[i][2] = i;
  34.     }
  35.     sort(q.begin(), q.end(), cmp);
  36.     for (int j = 0; j < m; j++) {
  37.  
  38.         while (r < q[j][1]) {
  39.             ans += cmt[(p[r]^k)];
  40.             cmt[p[r]]++;
  41.             ++r;
  42.         }
  43.         while (l > q[j][0]) {
  44.             --l;
  45.             ans += cmt[p[l] ^ k];
  46.             cmt[p[l]]++;
  47.            
  48.         }
  49.         while (r > q[j][1]) {
  50.             --r;
  51.             --cmt[p[r]];
  52.             ans -= cmt[(p[r] ^ k)];
  53.         }
  54.         while (l < q[j][0]) {
  55.             cmt[p[l]]--;
  56.             ans -= cmt[p[l] ^ k];
  57.             ++l;
  58.         }
  59.         otv[q[j][2]] = ans;
  60.     }
  61.     for (auto i : otv) {
  62.         cout << i << endl;
  63.     }
  64.     system("pause");
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement