Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2018
2,168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. #define mod 1000000007
  5. vector<pair<int,int> > v[100005];
  6. int arr[100005],a[100005];
  7. vector<int> s;
  8. bool b[(1<<20)];
  9. int main()
  10. {
  11.     int n,q;
  12.     scanf("%d%d",&n,&q);
  13.     for (int i=0;i<n;i++)
  14.     scanf("%d",&arr[i]);
  15.     for (int i=0;i<q;i++)
  16.     {
  17.         int l,x;
  18.         scanf("%d%d",&l,&x);
  19.         v[l-1].push_back({x,i});
  20.     }
  21.     s.push_back(0);
  22.     b[0]=1;
  23.     int ans=1;
  24.     for (int i=0;i<n;i++)
  25.     {
  26.         if (b[arr[i]])
  27.         ans=(ans*2)%mod;
  28.         else
  29.         {
  30.             int tmp=s.size();
  31.             for (int x=0;x<tmp;x++)
  32.             {
  33.                 s.push_back(s[x]^arr[i]);
  34.                 b[s.back()]=1;
  35.             }
  36.         }
  37.         for (int x=0;x<v[i].size();x++)
  38.         a[v[i][x].second]=ans*b[v[i][x].first];
  39.     }
  40.     for (int i=0;i<q;i++)
  41.     printf("%d\n",a[i]);
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement