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 space <<' '<<
#define endl '\n'
#define inf 1e14
#define F first
#define S second
#define PB push_back
#define PF push_front
#define md(a) ((a+mod)%mod)
#define MP(a,b) make_pair(a,b)
#define MT(a,b,c) make_tuple(a,b,c)
typedef long long ll;
using namespace std;
template<typename t> using heap=
priority_queue<t,vector<t>,greater<t>>;
const int mx = 2e3+5;
const int lg = 41;
int n,a,b;
ll arr[mx];
bool dp[mx];
bool comp(ll a,ll b,int x){
for(int y=lg;x<=y;y--)
if(((1ll<<y)&b)<((1ll<<y)&a))
return 0;
return 1;
}
bool check(ll c,int x){
dp[0]=1;
fill(dp+1,dp+1+n,0);
for(int t=1;t<=n;t++){
ll s=0;
for(int r=t;t-r+1<=b&&r;r--){
s+=arr[r];
if(a<=t-r+1)
if(comp(s,c,x))
dp[t]|=dp[r-1];
}
}
return dp[n];
}
int main(){
std::ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>a>>b;
for(int t=1;t<=n;t++)
cin>>arr[t];
ll c=0;
int x=lg;
for(;0<=x;x--)
if(!check(c,x))
c+=(1ll<<x);
cout<<c;
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... |