#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const int INF = 2e9;
const ll INFL = 2e18;
ll n; vector<ll> a, p;
map<pll, ll> memo;
ll solve(ll idx, ll left) {
if (memo.count({idx, left})) return memo[{idx, left}];
if (left == 0) return p[idx];
ll best = INFL;
for (ll i = 1; i < idx; i++) {
// Place partition between i and i + 1
ll prev = solve(i, left - 1);
ll sum = p[idx] - p[i];
best = min(best, prev | sum);
}
memo[{idx, left}] = best;
return best;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
ll l, r; cin >> n >> l >> r; a.resize(n + 1); p.resize(n + 1);
for (ll i = 1; i <= n; i++) cin >> a[i]; p[0] = 0;
for (ll i = 1; i <= n; i++) p[i] = a[i] + p[i - 1];
ll ans = INFL; for (ll i = l; i <= r; i++) ans = min(ans, solve(n, i - 1));
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... |