fork download
  1.  
  2.  
  3.  
  4. #include <bits/stdc++.h>
  5.  
  6. using namespace std;
  7. typedef long long int ll;
  8. int main(){
  9.  
  10. ll n;
  11. cin>>n;
  12. ll arr[10005];
  13.  
  14. for(ll i=1;i<=n;i++)
  15. cin>>arr[i];
  16.  
  17. ll dp[2][2048];
  18. for(ll i=0;i<2048;i++)
  19. dp[0][i]=-1;
  20.  
  21. dp[0][0]=0;
  22.  
  23. ll max1=*max_element(arr+1,arr+n+1);
  24.  
  25. for(ll i=1;i<=n;i++)
  26. {
  27. ll it=i&1;
  28. for(ll j=0;j<(1<<10);j++)
  29. {
  30. if(dp[!it][j] != -1)
  31. dp[it][j^arr[i]]=max(dp[!it][j^arr[i]],dp[!it][j]+1);
  32. else
  33. dp[it][j^arr[i]]=dp[!it][j^arr[i]];
  34. }
  35. }
  36.  
  37. ll arr3[1005];
  38. arr3[0]=1;
  39. ll mod=pow(10,9)+7;
  40. for(ll i=1;i<1005;i++)
  41. arr3[i]=(arr3[i-1]*31)%mod;
  42.  
  43. ll res=0;
  44. for(ll i=0;i<=max1;i++)
  45. {
  46. res=(res+(arr3[i]*dp[n&1][i])%mod)%mod;
  47. }
  48. cout<<res<<endl;
  49.  
  50. return 0;
  51. }
  52.  
  53.  
Success #stdin #stdout 0s 4332KB
stdin
Standard input is empty
stdout
0