Submission #303658

#TimeUsernameProblemLanguageResultExecution timeMemory
303658vipghn2003Bali Sculptures (APIO15_sculpture)C++14
100 / 100
320 ms11344 KiB
#include<bits/stdc++.h> using namespace std; const int N=2005; int n,l,r,a[N],dp[N][2]; long long offbit; vector<int>go[N]; bool Try(int k) { offbit+=(1ll<<k); for(int i=1;i<=n;i++) go[i].clear(); for(int i=1;i<=n;i++) { long long cur=0; for(int j=i;j<=n;j++) { cur+=a[j]; if((cur&offbit)==0) go[j].push_back(i); } } offbit-=(1ll<<k); dp[0][0]=0; dp[0][1]=0; for(int i=1;i<=n;i++) { dp[i][0]=1e9; dp[i][1]=0; for(auto&to:go[i]) { dp[i][0]=min(dp[i][0],dp[to-1][0]+1); dp[i][1]=max(dp[i][1],dp[to-1][1]+1); } } return (dp[n][0]<=r&&dp[n][1]>=l); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin>>n>>l>>r; for(int i=1;i<=n;i++) cin>>a[i]; long long res=0; for(int i=50;i>=0;i--) { if(Try(i)) offbit+=(1ll<<i); else res+=(1ll<<i); } cout<<res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...