fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long int
  4.  
  5. const ll N = 2e5 + 5, M = 18, K = 10001, OO = 2e18l, L = 18, MOD = 1e9 + 7, sumD = 6638449, inv = 500000004;
  6.  
  7. void solve() {
  8. int n, q, l, r;
  9. cin >> n;
  10. vector<int> v(n), ind(n);
  11. vector<vector<int>> pref(n), suff(n);
  12. for (int i = 0; i < n; i++) cin >> v[i];
  13. for (int i = 0, cnt = 0; i < n; i++) {
  14. int x = 0;
  15. ind[i] = cnt;
  16. pref[i].reserve(n - i);
  17. for (int j = i; j < n; j++) {
  18. cnt++;
  19. x ^= v[j];
  20. pref[i].push_back(x);
  21. }
  22. for (int j = 1; j < n - i; j++)
  23. pref[i][j] = max(pref[i][j], pref[i][j - 1]);
  24. }
  25. for (int i = 0; i < n; i++) {
  26. suff[i].reserve(i + 1);
  27. for (int j = i; j >= 0; j--)
  28. suff[i].push_back(pref[j][i - j]);
  29. for (int j = 1; j < i + 1; j++)
  30. suff[i][j] = max(suff[i][j], suff[i][j - 1]);
  31. }
  32. cin >> q;
  33. while (q--) {
  34. cin >> l >> r;
  35. --l, --r;
  36. cout << suff[r][r - l] << "\n";
  37. }
  38. }
  39.  
  40. signed main() {
  41. ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  42. ll t = 1;
  43. // cin >> t;
  44. while (t--) { solve(); cout << "\n";}
  45.  
  46. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout