#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <string>
#include <queue>
#include <unordered_set>
#include <deque>
#include <numeric>
#include <cmath>
#include <unordered_map>
#include <set>
#include <stack>
#include <complex>
#include <random>
#include <map>
#include <list>
#include <functional>
using namespace std;
typedef long long ll;
const ll LLINF = 1e18;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, a, b;
cin >> n >> a >> b;
vector<ll> y(n);
for (int i = 0; i < n; ++i) {
cin >> y[i];
}
vector<ll> pref(n);
partial_sum(y.begin(), y.end(), pref.begin());
vector<vector<ll>> dp(n, vector<ll>(b + 1, LLINF));
dp[0][1] = y[0];
for (int i = 1; i < n; ++i) {
dp[i][1] = pref[i];
for (int j = 2; j <= min(i + 1, b); ++j) {
for (int k = j - 2; k < i; ++k) {
dp[i][j] = min(dp[i][j], dp[k][j - 1] | (pref[i] - pref[k]));
}
}
}
cout << *min_element(dp[n - 1].begin() + a, dp[n - 1].begin() + b + 1) << '\n';
}
| # | 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... |