fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. using ll = long long;
  5.  
  6. ll solve(const vector<ll>& a, ll x) {
  7. int n = (int)a.size();
  8. if (n < 2) return 0;
  9.  
  10. ll dp0 = 0, dp1 = 0;
  11.  
  12. for (int i = 1; i < n; ++i) {
  13. ll ndp0 = max(dp0 + (a[i - 1] ^ a[i]),
  14. dp1 + ((a[i - 1] + x) ^ a[i]));
  15.  
  16. ll ndp1 = max(dp0 + (a[i - 1] ^ (a[i] + x)),
  17. dp1 + ((a[i - 1] + x) ^ (a[i] + x)));
  18.  
  19. dp0 = ndp0;
  20. dp1 = ndp1;
  21. }
  22.  
  23. return max(dp0, dp1);
  24. }
  25.  
  26. int main() {
  27. ios::sync_with_stdio(false);
  28. cin.tie(nullptr);
  29.  
  30. int n;
  31. ll x;
  32. cin >> n >> x;
  33.  
  34. vector<ll> a(n);
  35. for (int i = 0; i < n; ++i) cin >> a[i];
  36.  
  37. cout << solve(a, x) << '\n';
  38. return 0;
  39. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
3092412513671739126