제출 #708866

#제출 시각아이디문제언어결과실행 시간메모리
708866ToroTNBali Sculptures (APIO15_sculpture)C++14
100 / 100
213 ms460 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long ll n,a,b,c,qs[2005],dp[2005],cnt,dp2[105][105]; ll query(ll l,ll r) { return qs[r]-qs[l-1]; } int main() { ios_base::sync_with_stdio(0),cin.tie(0); cin >> n >> a >> b; for(int i=1;i<=n;i++) { cin >> c; qs[i]=qs[i-1]+c; } if(a==1) { cnt=0; for(int i=60;i>=0;i--) { cnt|=(1ll<<i); for(int j=1;j<=n;j++)dp[j]=1e9; dp[0]=0; for(int j=1;j<=n;j++) { for(int k=0;k<j;k++) { if((query(k+1,j)&cnt)==0) { dp[j]=min(dp[j],dp[k]+1); } } } if(dp[n]>b)cnt^=(1ll<<i); } printf("%lld\n",(((1ll<<61)-1ll)^cnt)); }else { for(int i=60;i>=0;i--) { //printf("%d\n",i); cnt|=(1ll<<i); for(int j=0;j<=n;j++) { for(int k=0;k<=j;k++) { //printf("%d %d\n",j,k); dp2[j][k]=0; } } dp2[0][0]=1; for(int j=1;j<=n;j++) { for(int k=0;k<j;k++) { if((query(k+1,j)&cnt)==0) { for(int l=1;l<=j;l++) { if(dp2[k][l-1]==1) { dp2[j][l]=1; } } } } } int sum=0; for(int j=a;j<=b;j++)sum+=dp2[n][j]; if(sum==0) { cnt^=(1ll<<i); } } printf("%lld\n",(((1ll<<61)-1ll)^cnt)); } }
#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...