Submission #1198964

#TimeUsernameProblemLanguageResultExecution timeMemory
1198964WarinchaiBali Sculptures (APIO15_sculpture)C++20
100 / 100
55 ms400 KiB
#include<bits/stdc++.h> #define int long long using namespace std; int ar[2005]; int mn[2005]; int inf=1e18; int can[105][105]; int psum[2005]; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n,a,b;cin>>n>>a>>b; for(int i=1;i<=n;i++)cin>>ar[i],psum[i]=ar[i]+psum[i-1]; if(a==1){ int val=0; for(int i=40;i>=0;i--){ for(int i=1;i<=n;i++)mn[i]=inf; int nval=val; int cnt=0; int cur=1; int nxt=1; int cant=0; for(int j=1;j<=n;j++){ int sum=0; for(int k=j;k<=n;k++){ sum+=ar[k]; if((sum&(~val))<(1LL<<i))mn[k]=min(mn[k],mn[j-1]+1); } } if(mn[n]>b)val=val|(1LL<<i); } cout<<val; }else{ int val=0; for(int i=40;i>=0;i--){ for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)can[i][j]=0; can[0][0]=1; for(int j=1;j<=n;j++){ for(int k=1;k<=j;k++){ int sum=psum[j]-psum[k-1]; for(int l=1;l<=b;l++){ if((sum&(~val))<(1LL<<i))can[j][l]|=can[k-1][l-1]; } } } int rcan=0; for(int i=a;i<=b;i++)rcan|=can[n][i]; if(!rcan)val=val|(1LL<<i); } cout<<val; } }
#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...