fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main(){
  5. ios::sync_with_stdio(false);
  6. cin.tie(0);
  7. int n,k;
  8. cin>>n>>k;
  9. vector<int> a(n+1),l(k+1),r(k+1);
  10. for(int i=1;i<=n;i++) cin>>a[i];
  11. for(int i=1;i<=k;i++) cin>>l[i]>>r[i];
  12. vector<int> pxor(n+1);
  13. for(int i=1;i<=n;i++) pxor[i]=pxor[i-1]^a[i];
  14. vector<vector<long long>> dp(n+1,vector<long long>(k+1,0));
  15. dp[0][0]=1;
  16. for(int i=1;i<=n;i++){
  17. for(int s=1;s<=k;s++){
  18. for(int j=0;j<i;j++){
  19. int x = pxor[i]^pxor[j];
  20. if(x>=l[s] && x<=r[s]) dp[i][s]+=dp[j][s-1];
  21. }
  22. }
  23. }
  24. cout<<dp[n][k]<<"\n";
  25. }
  26.  
Success #stdin #stdout 0.01s 5316KB
stdin
4 2
1 2 3 4
1 4
2 10
stdout
2