#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
const long long inf = 1e9;
signed main(){
    int n,a,b; cin >> n >> a >> b;
    long long ans = (1LL << 60)-1;
    vector<int> c(n+1),v(n+1, 0);
    for(int i = 1; i <= n; i++) cin >> c[i];
    for(int i = 1; i <= n; i++) v[i] = v[i-1]+c[i];
    for(int j = 59; j >= 0; j--){
        ans -= (1LL << j);
        vector<pair<int,int>> dp(n+1, {inf, -inf});
        dp[0] = {0, 0};
        for(int i = 1; i <= n; i++){
            for(int k = 0; k < i; k++){
                int sum = v[i]-v[k];
                if((ans | sum) == ans && dp[k].fi != inf){
                    dp[i].fi = min(dp[i].fi, dp[k].fi+1);
                    dp[i].se = max(dp[i].se, dp[k].se+1);
                }
            }
        }
        if(dp[n].fi == inf || max(a, dp[n].fi) > min(b, dp[n].se)) ans += (1LL << j);
    }
    cout << ans;
}
| # | 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... |