fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define N 100001
  4. int segtree[6*N],a[N];
  5. void maketree(int l,int h, int pos)
  6. { if(l==h)
  7. { segtree[pos]=a[l];
  8. return ;
  9. }
  10. int mid=l+(h-l)/2;
  11. maketree(l,mid,2*pos+1);
  12. maketree(mid+1,h,2*pos+2);
  13. segtree[pos]=segtree[2*pos+1] | segtree[2*pos+2];
  14. }
  15. int query(int l, int r, int ql, int qh,int pos)
  16. { if(ql<=l && qh>=r)
  17. return segtree[pos];
  18. if(ql>r || qh<l)
  19. return 0;
  20. int mid=l+(r-l)/2;
  21. return query(l,mid,ql,qh,2*pos+1) | query(mid+1,r,ql,qh,2*pos+2);
  22. }
  23. int main()
  24. { int t,n,k;
  25. cin>>t;
  26. while(t--)
  27. { cin>>n>>k;
  28. for(int i=1;i<=n;i++)
  29. cin>>a[i];
  30. int ans=0,j=1;
  31. maketree(1,n,0);
  32. for(int i=1;i<=n;i++)
  33. { while(j<=n && query(1,n,i,j,0)>=k)
  34. j++;
  35. ans+=j;
  36. }
  37. cout<<ans<<endl;
  38. }
  39. return 0;
  40. }
Runtime error #stdin #stdout 1.44s 6200KB
stdin
Standard input is empty
stdout
Standard output is empty