#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int flipbit(int num, int bit)
{
return num ^ (1ll << bit);
}
int a[105], dp[105][105];
bool check(int x, int n, int l, int r)
{
dp[0][0] = 1;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
dp[i][j] = 0;
int cursum = 0;
for(int k = i; k >= 1; k--){
cursum += a[k];
if((cursum & x) == cursum) dp[i][j] |= dp[k-1][j-1];
}
}
}
bool ans = 0;
for(int i = l; i <= r; i++) ans |= dp[n][i];
return ans;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
/*n <= 100 but no constraint on l*/
int n, l, r; cin>>n>>l>>r;
for(int i = 1; i <= n; i++) cin>>a[i];
int ans = (1ll << 50)-1;
for(int i = 49; i >= 0; i--){
ans = flipbit(ans, i);
if(check(ans, n, l, r) == 0) ans = flipbit(ans, i); //Submask binary search technique
}
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... |