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>
using namespace std;
int n,p,q,dp[2020];
long long a[2010];
bool f[110][110];
void sub1() {
long long ans=0;
for (int x=63;x>=0;--x) {
f[0][0] = 1;
memset(f,0,sizeof(f));
long long o=ans|(1ll << x);
for (int pos = 1 ; pos <= q ; ++pos) {
for (int i=pos; i<=n ; ++i)
for (int j=i ; j>=1 ; --j) {
long long val = a[i] - a[j-1];
f[i][pos]=(f[j-1][pos-1] && ((val & o) == 0));
}
}
for (int pos=p;pos<=q;++pos)
if (f[n][pos]) {
ans = o;
break;
}
}
long long res = 0;
for (int i=0;i<=63;++i)
if ((ans&(1ll<<i)) == 0)
res |= (1LL<<i);
cout<<res;
}
void sub2() {
long long ans=0;
for (int x=63;x>=0;--x) {
memset(dp,0x3f,sizeof(dp));
dp[0] = 0;
long long o = ans | (1ll << x);
for (int i=1;i<=n;++i)
for (int j=i;j>0;--j) {
long long val = a[i] - a[j-1];
if ((val & o) == 0) dp[i] = min(dp[i] , dp[j-1] + 1);
}
if (dp[n] <= q)
ans=o;
}
long long res = 0;
for (int i=0;i<=63;++i)
if ((ans & (1LL<<i))==0)
res|=(1ll<<i);
cout << res;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>p>>q;
for (int i=1;i<=n;++i)
cin>>a[i] ,
a[i]=a[i-1]+a[i];
if (p != 1)
sub1();
else
sub2();
}
| # | 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... |