#pragma GCC optimize ("O3")
#pragma GCC optimize ("unroll-loops")
#pragma GCC optimize("-Ofast")
#include <bits/stdc++.h>
#include <algorithm>
#include <iostream>
#include <vector>
#include <limits>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <math.h>
using namespace std;
using ll = long long;
ll n, a, b;
ll curr_MIN = 1E18;
void recur(ll idx, vector<ll> &list_n, vector<ll> &pref, ll val, ll curr){
if(curr > b){
return;
}
for(ll i = idx; i < n - 1; i++){
ll new_val = pref[i + 1] - pref[idx];
recur(i + 1, list_n, pref, val | new_val, curr + 1);
}
if(curr >= a){
ll new_val = pref[n] - pref[idx];
curr_MIN = min(curr_MIN, new_val | val);
}
}
void solve(){
cin >> n >> a >> b;
vector<ll> list_n(n, 0);
vector<ll> prefix(n + 1, 0);
for(ll i = 0; i < n; i++){
cin >> list_n[i];
prefix[i + 1] = prefix[i] + list_n[i];
}
recur(0, list_n, prefix, 0, 1);
cout << curr_MIN;
}
bool single = true;
signed main(){
ios_base::sync_with_stdio(false);
cout.tie(0);
cin.tie(0);
ll t = 1;
if(!single) cin >> t;
while(t--){
solve();
}
}
# | 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... |