#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int flipbit(int num, int bit)
{
return num ^ (1ll << bit);
}
int a[2005], dp[2005];
bool check(int x, int n, int l, int r)
{
dp[0] = 0;
for(int i = 1; i <= n; i++){
dp[i] = 1e18;
int cursum = 0;
for(int j = i; j >= 1; j--){
cursum += a[j];
if((cursum & x) == cursum) dp[i] = min(dp[i], dp[j-1] + 1);
}
}
return dp[n] <= r;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
/*n <= 2000 but l = 1*/
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... |