#include <bits/stdc++.h>
using namespace std;
#define int long long
const int inf = 1e9;
signed main(){
ios::sync_with_stdio(0);
cin.tie(nullptr); cout.tie(nullptr);
int n, a, b, ans = 0, mask = 0;
cin >> n >> a >> b;
vector<int> ar(n + 1, 0);
for(int i = 1; i <= n; ++i){
cin >> ar[i];
}
if(a == 1){
for(int j = 61; j >= 0; --j){
vector<int> dp(n + 5, inf);
dp[0] = 0;
mask ^= (1ll << j);
for(int i = 1; i <= n; ++i){
int sum = 0;
for(int j = i; j >= 1; --j){
sum += ar[j];
if((sum & mask) == 0 && dp[j] <= inf) dp[i] = min(dp[i], dp[j - 1] + 1);
}
}
if(dp[n] > b){
ans ^= (1ll << j);
mask ^= (1ll << j);
}
}
cout << ans << "\n";
}else{
for(int j = 61; j >= 0; --j){
vector<vector<int>> dp(n + 5, vector<int>(n + 5, 0));
dp[0][0] = 1;
mask ^= (1ll << j);
for(int i = 1; i <= n; ++i){
int sum = 0;
for(int prev = i; prev >= 1; --prev){
sum += ar[prev];
if((sum & mask) == 0){
for(int k = 1; k <= b; ++k){
dp[i][k] |= dp[prev - 1][k - 1];
}
}
}
}
bool ok = 0;
for(int i = a; i <= b; ++i){
if(dp[n][i]) ok = 1;
}
if(!ok){
ans ^= (1ll << j);
mask ^= (1ll << j);
}
}
cout << ans << "\n";
}
return 0;
}
| # | 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... |