Submission #303636

#TimeUsernameProblemLanguageResultExecution timeMemory
303636vipghn2003Bali Sculptures (APIO15_sculpture)C++14
71 / 100
1090 ms2424 KiB
#include<bits/stdc++.h> using namespace std; const int N=2005; int n,l,r,a[N]; bool dp[N][N]; vector<int>offbit,go[N]; bool Try(int k) { offbit.push_back(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]; bool kt=true; for(auto&x:offbit) { if(cur>>x&1) { kt=false; break; } } if(kt) go[j].push_back(i); } } offbit.pop_back(); dp[0][0]=true; for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { dp[i][j]=false; for(auto&to:go[i]) dp[i][j]=max(dp[i][j],dp[to-1][j-1]); } } for(int i=l;i<=r;i++) if(dp[n][i]) return true; return false; } 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.push_back(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...