#include <bits/stdc++.h>
#define pb push_back
#define pf push_front
using namespace std;
#define F first
#define S second
typedef long long ll;
#define pii pair <int, int>
#define pll pair <ll, ll>
typedef long double ld;
const ll N = 1e5 + 100, M = 4096 + 10, len = 21, inf = 1e18;
const ll mod = 1e9 + 7;
ll p[N], n, a, b, arr[N];
ll dp[N], nw[N];
void full(){
ll x = 0, num = 0;
for(ll i = 40; i >= 0; i--){
//cout << i << " LL\n";
x += p[i];
num += p[i];
for(ll k = 1; k <= n; k++){
dp[k] = LLONG_MAX;
}
dp[0] = 0;
for(ll j = 1; j <= n; j++){
ll sum = 0;
//cout << j << " level\n";
for(ll k = j; k <= n; k++){
sum += arr[k];
if((sum & num) == 0 && dp[j - 1] != LLONG_MAX) dp[k] = min(dp[k], dp[j - 1] + 1);
//cout << dp[k] << " ";
}
//cout << endl;
}
if(dp[n] <= b) x -= p[i];
else num -= p[i];
}
cout << x;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> a >> b;
for(ll i = 1; i <= n; i++){
cin >> arr[i];
}
p[0] = 1LL;
for(ll i = 1; i <= 45; i++){
p[i] = p[i - 1] * 2LL;
}
if(a == 1){
full();
return 0;
}
ll x = 0, num = 0;
for(ll i = 40; i >= 0; i--){
x += p[i];
num += p[i];
for(ll k = 1; k <= n; k++){
dp[k] = 0;
}
dp[0] = 1;
//cout << i << " " << p[i] << " " << num << endl;
bool was = false;
for(ll gr = 1; gr <= b; gr++){
//cout << gr << " group\n";
for(ll j = gr; j <= n; j++){
if(dp[j - 1] == 0) continue;
ll sm = 0;
//cout << j << " " << dp[j - 1] << endl;
for(ll k = j; k <= n; k++){
sm += arr[k];
//cout << sm << endl;
if((sm & num) == 0) nw[k] = 1;
}
}
for(ll k = 1; k <= n; k++){
dp[k] = nw[k];
nw[k] = 0;
}
if(gr >= a && dp[n]) was = true;
}
if(was) x -= p[i];
else num -= p[i];
//cout << x << " "<< num << endl << endl;
}
cout << x;
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... |