Submission #1185348

#TimeUsernameProblemLanguageResultExecution timeMemory
1185348boclobanchatBali Sculptures (APIO15_sculpture)C++20
50 / 100
120 ms23300 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN=2024; long long F[MAXN][MAXN],dp[MAXN]; bool ck[MAXN][MAXN]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,a,b; cin>>n>>a>>b; for(int i=1;i<=n;i++) { cin>>F[i][i]; for(int j=i-1;j;j--) F[j][i]=F[j+1][i]+F[j][j]; } long long ans=0; for(int i=41;i+1;i--) { long long res=ans|(1LL<<i); if(a==1) { for(int j=1;j<=n;j++) { dp[j]=1e9; for(int k=j-1;k+1;k--) if((F[k+1][j]&res)==0) dp[j]=min(dp[j],dp[k]+1); } if(dp[n]<=b) ans=res; } else { bool e=false; ck[0][0]=true; for(int j=0;j<=n;j++) for(int k=0;k<=n;k++) ck[j][k]=false; for(int j=1;j<=n;j++) for(int k=j-1;k+1;k--) if((F[k+1][j]&res)==0) for(int l=1;l<=n;l++) ck[j][l]|=ck[k][l-1]; for(int j=a;j<=b;j++) e|=ck[n][j]; if(e) ans=res; } } cout<<(1LL<<42)-1-ans; }
#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...