Submission #1322133

#TimeUsernameProblemLanguageResultExecution timeMemory
1322133aaaaaaaaBali Sculptures (APIO15_sculpture)C++20
50 / 100
179 ms456 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int inf = 1e9;
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(nullptr); cout.tie(nullptr);
    int n, a, b, ans = 0, mask = 0;
    cin >> n >> a >> b;
    vector<int> ar(n + 1, 0);
    for(int i = 1; i <= n; ++i){
        cin >> ar[i];
    }
    if(a == 1){
        for(int j = 61; j >= 0; --j){
            vector<int> dp(n + 5, inf);
            dp[0] = 0;
            mask ^= (1ll << j);
            for(int i = 1; i <= n; ++i){
                int sum = 0;
                for(int j = i; j >= 1; --j){
                    sum += ar[j];
                    if((sum & mask) == 0 && dp[j] <= inf) dp[i] = min(dp[i], dp[j - 1] + 1);
                }
            }
            if(dp[n] > b){
                ans ^= (1ll << j);
                mask ^= (1ll << j);
            }
        }
        cout << ans << "\n";
    }else{
        for(int j = 61; j >= 0; --j){
            vector<vector<int>> dp(n + 5, vector<int>(n + 5, 0));
            dp[0][0] = 1;
            mask ^= (1ll << j);
            for(int i = 1; i <= n; ++i){
                int sum = 0;
                for(int prev = i; prev >= 1; --prev){
                    sum += ar[prev];
                    if((sum & mask) == 0){
                        for(int k = 1; k <= b; ++k){
                            dp[i][k] |= dp[j - 1][k - 1];
                        }
                    }
                }
            }
            bool ok = 0;
            for(int i = a; i <= b; ++i){
                if(dp[n][i]) ok = 1;
            }
            if(!ok){
                ans ^= (1ll << j);
                mask ^= (1ll << j);
            }
        }
    }
    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...