#include<bits/stdc++.h>
using namespace std;
// https://codeforces.com/blog/entry/17717?#comment-227370
const int N = 105;
const int LOG = 38;
int a[N];
bool dp[N][N];
bool check(long long S, int n, int A, int B){
for(int i = 1;i <= n + 1;++i){
for(int j = 0;j <= n;++j){
dp[i][j] = false;
}
}
for(int i = A;i <= B;++i){
dp[n + 1][i] = true;
}
for(int i = n;i >= 1;--i){
for(int j = 0;j <= n;++j){
long long sum = 0;
for(int ii = i;ii <= n;++ii){
sum += a[ii];
if((sum & S) == sum){
dp[i][j] = (dp[i][j] | dp[ii + 1][j + 1]);
}
}
}
}
return dp[1][0];
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, A, B;
cin >> n >> A >> B;
for(int i = 1;i <= n;++i){
cin >> a[i];
}
long long ans = (1ll << LOG) - 1;
for(int i = LOG - 1;i >= 0;--i){
if(check(ans - (1ll << i), n, A, B)){
ans -= (1ll << i);
}
}
cout << ans << '\n';
}
# | 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... |