| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1338441 | vjudge1 | Bali Sculptures (APIO15_sculpture) | C++20 | 150 ms | 452 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int main()
{
int n,a,b;
cin>>n>>a>>b;
vector<ll> y(n+1),pre(n+1);
for(int i=1;i<=n;i++){
cin>>y[i];
pre[i]=pre[i-1]+y[i];
}
ll ans=(1LL<<62)-1;
for(int bt=61;bt>=0;bt--){
ll cur=ans^(1LL<<bt);
bool ok=0;
if(a==1){
vector<int> dp(n+1,n+5);
dp[0]=0;
for(int r=1;r<=n;r++){
for(int l=0;l<r;l++){
ll s=pre[r]-pre[l];
if((s|cur)==cur)
dp[r]=min(dp[r],dp[l]+1);
}
}
if(dp[n]<=b) ok=1;
}
else{
vector<vector<int>> dp(n+1,vector<int>(b+1,0));
dp[0][0]=1;
for(int r=1;r<=n;r++){
for(int l=1;l<=b;l++){
for(int k=0;k<r;k++){
ll s=pre[r]-pre[k];
if(dp[k][l-1] && (s|cur)==cur)
dp[r][l]=1;
}
}
}
for(int l=a;l<=b;l++)
if(dp[n][l]) ok=1;
}
if(ok)ans=cur;
}
cout<<ans<<endl;
}| # | 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... | ||||
