bitmasks dp math matrices *2400

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;

const ll mod = 1e9+7;
const int N = 1e5+5, D = 20;

ll p2[N];

void solve() {
  int n, q;  cin >> n >> q;
  vector<int> a(n);
  for (auto &ai: a) {
    cin >> ai;
  }
  vector<array<int, 2>> cu[n];
  for (int i = 0; i < q; ++i) {
    int l, x;  cin >> l >> x;  l--;
    cu[l].push_back({x, i});
  }
  vector<int> basis(D);
  int rank = 0;
  vector<int> ans(q);
  for (int i = 0; i < n; ++i) {
    int mask = a[i];
    for (int j = D - 1; j >= 0; --j) {
      if (!(mask & (1 << j)))  continue;
      if (!basis[j]) {
        basis[j] = mask;
        rank++;
        break;
      }
      mask ^= basis[j];
    }

    for (auto [x, idx]: cu[i]) {
      for (int j = D - 1; j >= 0; --j) {
        if (!(x & (1 << j)))  continue;
        x ^= basis[j];
      }
      if (x == 0) {
        ans[idx] = p2[i - rank + 1];
      }
    }
  }

  for (auto x: ans) {
    cout << x << "\n";
  }
}

int main(){
  ios::sync_with_stdio(0), cin.tie(0);

  p2[0] = 1;
  for (int i = 1; i < N; ++i) {
    p2[i] = p2[i - 1] + p2[i - 1];
    if (p2[i] >= mod)  p2[i] -= mod;
  }

  int tc = 1;
  for (int t = 1; t <= tc; ++t) {
    solve();
  }
}


Comments

Submit
0 Comments
More Questions

977D - Divide by three multiply by two
1654B - Prefix Removals
1654A - Maximum Cake Tastiness
1649A - Game
139A - Petr and Book
1612A - Distance
520A - Pangram
124A - The number of positions
1041A - Heist
901A - Hashing Trees
1283A - Minutes Before the New Year
1654D - Potion Brewing Class
1107B - Digital root
25A - IQ test
785A - Anton and Polyhedrons
1542B - Plus and Multiply
306A - Candies
1651C - Fault-tolerant Network
870A - Search for Pretty Integers
1174A - Ehab Fails to Be Thanos
1169A - Circle Metro
780C - Andryusha and Colored Balloons
1153A - Serval and Bus
1487C - Minimum Ties
1136A - Nastya Is Reading a Book
1353B - Two Arrays And Swaps
1490E - Accidental Victory
1335A - Candies and Two Sisters
96B - Lucky Numbers (easy)
1151B - Dima and a Bad XOR