#include <bits/stdc++.h>
using namespace std;
template<class T, class U> inline bool chmin(T& a, const U& b) { if (a > b) { a = b; return true; } return false; }
template<class T, class U> inline bool chmax(T& a, const U& b) { if (a < b) { a = b; return true; } return false; }
#define pb push_back
#define int long long
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define rep(i, s, f) for(int i = s; i < f; i++)
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//#define rnd(l, r) uniform_int_distribution <int> (l, r)(rng)
const int inf = 3e18;
void solve(){
int n, a, b;
cin >> n >> a >> b;
vector<int> v(n), pr{0};
for(int &i:v){
cin >> i;
pr.pb(pr.back() + i);
}
vector<vector<int>> dp(n+1, vector<int> (b+1, inf));
dp[0][0] = 0;
for(int i = 1; i <= n; i++){
for(int j = 0; j < i; j++){
for(int k = 0; k < b; k++){
chmin(dp[i][k+1], dp[j][k] | (pr[i] - pr[j]));
}
}
}
int ans = dp[n][b];
for(int i = a; i <= b; i++)
chmin(ans, dp[n][i]);
cout << ans << '\n';
};
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int tt = 1;
//cin >> tt;
while(tt--){
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... |