// #pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define speedup cin.tie(0)->sync_with_stdio(0)
#define all(x) begin(x), end(x)
#define int long long
#define pb push_back
#define arr array
#define vc vector
const int N = 2e3 + 10;
static int dp[N][N];
inline void solve () {
int n, l, r;
cin >> n >> l >> r;
vc <int> a(n + 1, 0);
for (int i = 1; i <= n; i++) cin >> a[i];
int lgm = __lg(*max_element(all(a))), ans = (1 << (lgm + 1)) - 1;
auto good = [&](int mask) -> int {
memset(dp, 0, sizeof(dp));
for (int i = 0; i <= r; i++) dp[i][0] = 1;
for (int j = 1; j <= r; j++) {
for (int i = 1; i <= n; i++) {
int sum = 0;
for (int k = i; k >= 1; k--) {
sum += a[k];
if ((sum & ans) == sum && dp[j - 1][k - 1]) {
dp[j][i] = 1;
break;
}
}
}
if (dp[j][n] && l <= j && j <= r) return 1;
}
return 0;
};
for (int bit = lgm; bit >= 0; bit--) {
ans ^= (1 << bit);
if (!good(ans)) ans ^= (1 << bit);
}
cout << ans << '\n';
}
signed main() {
speedup;
solve();
return 0;
}
/*
6 1 3
8 1 2 1 5 4
*/
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |