This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define pb push_back
#define int long long
#define mp make_pair
using namespace std;
const int inf = 1e18;
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
vector<int> f2(65);
int bf(int n, int a, int b, vector<int> &arr){
int ans = inf;
for(int j = 1; j < (1 << n); j += 2){
int g = 0, val = 0, sum = 0;
for(int i = 0; i < n; i++){
if(j & (1 << i)){
val |= sum;
sum = 0;
g++;
}
sum += arr[i];
}
val |= sum;
if(g >= a && g <= b){
if(val > ans) continue;
ans = min(ans, val);
}
}
return ans;
}
int f(int n, int a, int b, vector<int> &arr, vector<int>&pre, int alma, int preans){ // bu biti almamaya calisiyoruz invalid olan bitleri de almadan basarirsak (valid |= (1 << alma), alma--)
vector<int> dpmn(n+1, inf);
dpmn[0] = 0;
for(int i = 0; i < n; i++){
for(int k = i + 1; k <= n; k++){
if((pre[k] - pre[i]) & f2[alma]) continue;
if(((pre[k] - pre[i])|preans) > f2[alma] + preans) continue;
dpmn[k] = min(dpmn[k], dpmn[i] + 1);
}
}
vector<int> dpmx(n+1, 0);
dpmn[0] = 0;
for(int i = 0; i < n; i++){
for(int k = i + 1; k <= n; k++){
if((pre[k] - pre[i]) & f2[alma]) continue;
if(((pre[k] - pre[i])|preans) > f2[alma] + preans) continue;
dpmx[k] = max(dpmx[k], dpmx[i] + 1);
}
}
bool ok = (dpmx[n] >= a && dpmn[n] <= b);
return ok;
}
int32_t main(){
ios_base::sync_with_stdio(false), cin.tie();
f2[0] = 1;
for(int i = 1; i <= 60; i++){
f2[i] = f2[i-1] * 2;
}
int n, a, b;
cin>>n>>a>>b;
vector<int> arr(n), pre(n+1);
for(int i = 0; i < n; i++){
cin>>arr[i];
pre[i+1] = pre[i] + arr[i];
}
int ans = 0;
for(int i = 60; i >= 0; i--){
if(!f(n, a, b, arr, pre, i, ans)){
ans += f2[i];
}
}
cout<<ans<<endl;
return 0;
}
# | 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... |