#include<bits/stdc++.h>
using namespace std;
const int maxn=51;
const int inf=1e9+7;
int v[maxn], dp[maxn][501][21]; // dp[id][val][qtd] se eu consigo formar o valor val, com partição dos id primeiros caras, usando qtd grupos
signed main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int n, a, b; cin >> n >> a >> b;
for(int i=1;i<=n;i++) cin >> v[i];
dp[0][0][0]=1;
int resp=inf;
for(int i=1;i<=n;i++){
int sum=0;
for(int j=i-1;j>=0;j--){
sum+=v[j+1];
for(int val=0;(val|sum)<=500;val++){
for(int x=0;x<20;x++){
dp[i][(val|sum)][x+1]=max(dp[i][(val|sum)][x+1],dp[j][val][x]);
if(i==n&&a<=x&&x<=b&&dp[i][(val|sum)][x+1]) resp=min(resp,(val|sum));
}
}
}
}
cout << resp << 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... |