Submission #1319626

#TimeUsernameProblemLanguageResultExecution timeMemory
1319626husseinjuandaBali Sculptures (APIO15_sculpture)C++20
100 / 100
61 ms504 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
	int n, a, b; cin >> n >> a >> b;
    vector<int> x(n+1);
    for(int i = 1; i <= n; i++){
        cin >> x[i];
    }
    if(n <= 100){
        int cur = (1LL<<44)-1;
        for(int i = 43; i >= 0; i--){
            cur -= (1LL<<i);
            vector<vector<int>> dp(n+1, vector<int>(n+1));
            dp[0][0] = 1;
            vector<pair<int, int>> q;
            for(int i = 1; i <= n; i++){
                int sum = 0; 
                for(int y = i; y <= n; y++){
                    sum += x[y];
                    if((sum|cur) == cur){
                        for(int z = 1; z <= n; z++){
                            dp[y][z] |= dp[i-1][z-1];
                        }
                    }
                }
            }
            bool j = false;
            for(int y = a; y <= b; y++){
                if(dp[n][y]){
                    j = true;
                }
            }
            if(!j){
                cur += (1LL<<i);
            }
        }
        cout << cur << "\n";
    }else{
        int cur = (1LL<<44)-1;
        for(int i = 43; i >= 0; i--){
            cur -= (1LL<<i);
            vector<int> dp(n+1, 1e18);
            dp[0] = 0;
            vector<pair<int, int>> q;
            for(int i = 1; i <= n; i++){
                int sum = 0; 
                for(int y = i; y <= n; y++){
                    sum += x[y];
                    if((sum|cur) == cur){
                        dp[y] = min(dp[y], dp[i-1]+1);
                    }
                }
            }
            if(dp[n] > b){
                cur += (1LL<<i);
            }
        }
        cout << cur << "\n";
    }
    return 0;
}
#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...