Submission #846264

#TimeUsernameProblemLanguageResultExecution timeMemory
846264vjudge1Bali Sculptures (APIO15_sculpture)C++17
50 / 100
136 ms600 KiB
#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 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...