#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e18;
signed main(){
int n , l , r;
cin >> n >> l >> r;
vector < int > a(n + 1);
for(int i = 1;i <= n;i++) cin >> a[i];
vector < pair < int , pair < int , int > > > rng;
for(int i = 1;i <= n;i++)
{
int s = 0;
for(int j = i;j <= n;j++)
{
s += a[j];
rng.push_back({s , {i , j}});
}
}
vector < vector < int > > dp(n + 1 , vector < int > (n * n , INF));
for(int i = 0;i < rng.size();i++)
{
if(rng[i].second.first == 1) dp[1][i] = rng[i].first;
}
for(int cnt = 2;cnt <= n;cnt++)
{
for(int i = 0;i < rng.size();i++)
{
for(int j = 0;j < rng.size();j++)
{
if(rng[i].second.first == rng[j].second.second + 1) dp[cnt][i] = min(dp[cnt][i] , dp[cnt - 1][j] | rng[i].first);
}
}
}
int res = INF;
for(int cnt = l;cnt <= r;cnt++)
{
for(int i = 0;i < rng.size();i++)
{
if(rng[i].second.second == n) res = min(res , dp[cnt][i]);
}
}
cout << res << endl;
}
| # | 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... |