Submission #961822

#TimeUsernameProblemLanguageResultExecution timeMemory
961822vjudge1Bali Sculptures (APIO15_sculpture)C++14
100 / 100
180 ms4452 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int _N=2010; int a[_N], n, l, r, pf[_N]; namespace sub5{ const int N=2010; bool adj[N][N]; int f[N]; bool check(int msk){ for (int i=0; i<=n; ++i) for (int j=i+1; j<=n; ++j) adj[i][j]=((pf[j]-pf[i])&msk)==0; memset(f, 0x3f, sizeof f); f[0]=0; for (int i=0; i<n; ++i) for (int j=i+1; j<=n; ++j) if (adj[i][j]){ f[j]=min(f[j], f[i]+1); } return f[n]<=r; } void solve(){ int msk=(1ll<<60)-1; for (int i=59; i>=0; --i){ if (check((1ll<<60)-1-(msk^(1ll<<i)))) msk^=1ll<<i; } cout << msk << '\n'; } } namespace sub4{ const int N=110; bool adj[N][N]; bool f[N][N]; bool check(int msk){ for (int i=0; i<=n; ++i) for (int j=i+1; j<=n; ++j) adj[i][j]=((pf[j]-pf[i])&msk)==0; memset(f, 0, sizeof f); f[0][0]=1; for (int i=0; i<n; ++i) for (int j=i+1; j<=n; ++j) if (adj[i][j]){ for (int k=0; k<n; ++k) f[j][k+1]|=f[i][k]; } return *max_element(f[n]+l, f[n]+r+1); } void solve(){ int msk=(1ll<<60)-1; for (int i=59; i>=0; --i){ if (check((1ll<<60)-1-(msk^(1ll<<i)))) msk^=1ll<<i; } cout << msk << '\n'; } } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> l >> r; for (int i=1; i<=n; ++i) cin >> a[i]; partial_sum(a, a+n+1, pf); if (l==1) sub5::solve(); else sub4::solve(); return 0; }
#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...