Submission #551001

#TimeUsernameProblemLanguageResultExecution timeMemory
551001ala2Bali Sculptures (APIO15_sculpture)C++14
0 / 100
8 ms9988 KiB
#include <bits/stdc++.h> #define int long long #define pb push_back #define F first #define S second #define B begin() #define E end() using namespace std; int n,l,r; int a[1001000]; int p[1000100]; int suf[1001000]; int dp[55][22][501]; int sum(int i,int j) { return p[j]-p[i]+a[i]; } int f(int i,int k,int x) { if(k==r) { return (x|suf[i]); } if(i==n-1) return (x|a[i]); if(dp[i][k][x]!=-1) return dp[i][k][x]; int mn=1e17; if(k>=l) mn=min(mn,(suf[i]|x)); for(int j=i;j<n-1;j++) { mn=min(mn,f(j+1,k+1,(x|sum(i,j)))); } return dp[i][k][x]=mn; } signed main() { memset(dp,-1,sizeof dp); cin>>n>>l>>r; l--; r--; for(int i=0;i<n;i++) cin>>a[i]; p[0]=a[0]; for(int i=1;i<n;i++) p[i]=p[i-1]+a[i]; suf[n-1]=a[n-1]; for(int i=n-2;i>=0;i--) { suf[i]=suf[i+1]+a[i]; } cout<<f(0,0,0)<<endl; }
#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...