Submission #1361464

#TimeUsernameProblemLanguageResultExecution timeMemory
1361464ezzzayBali Sculptures (APIO15_sculpture)C++20
71 / 100
1095 ms444 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
const int N=5555;
int a[N];
int ps[N];
bool vis[55];
bool check(int s, int x){
    for(int i=50;i>=x;i--){
        if((1ll<<i) & s){
            // baigaa 
            if(vis[i]==0)return 0;
        }
    }
    return 1;
}
signed main(){
    int n,A,B;
    cin>>n>>A>>B;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        ps[i]=ps[i-1]+a[i];
    }
    
    for(int x=50;x>=0;x--){
        vector<vector<bool>> dp(n+10,vector<bool>(n+10));
        dp[0][0]=1;
        for(int i=1;i<=n;i++){
            for(int p=1;p<=i;p++){
                int s=ps[i]-ps[p-1];
                bool u=check(s,x);
                if(u==0)continue;
                for(int j=1;j<=n;j++){
                    dp[i][j]= dp[p-1][j-1] ? 1 : dp[i][j];
                    
                }
            }
        }
        bool u=0;
        for(int i=A;i<=B;i++){
            if(dp[n][i])u=1;
        }
        if(u==0){
            vis[x]=1;
        }
        
    }
    int ans=0;
    for(int i=50;i>=0;i--){
        if(vis[i]){
            ans+=(1ll<<i);
        }
    }
    cout<<ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...