Submission #1358882

#TimeUsernameProblemLanguageResultExecution timeMemory
1358882nathlol2Bali Sculptures (APIO15_sculpture)C++20
0 / 100
1 ms344 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 2e3 + 5;
int n, a, b, ans, y[N], pf[N][31], dp[N];
vector<int> can[N];

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    cin >> n >> a >> b;
    for(int i = 1;i<=n;i++){
        cin >> y[i];
        for(int bit = 0;bit<=30;bit++){
            pf[i][bit] = pf[i - 1][bit];
            if(y[i] & (1 << bit)) pf[i][bit]++;
        }
    }
    for(int i = 1;i<=n;i++){
        for(int j = max(0, i - b);j<=i - a;j++) can[i].push_back(j);
    }
    for(int bit = 30;bit>=0;bit--){
        memset(dp, 0, sizeof dp);
        dp[0] = 1;
        vector<int> ncan[N];
        for(int i = 1;i<=n;i++){
            for(auto x : can[i]){
                if((pf[i][bit] - pf[x][bit]) % 2 == 0) dp[i] |= dp[x], ncan[i].push_back(x);
            }
        }
        if(dp[n]){
            for(int i = 1;i<=n;i++) can[i] = ncan[i];
        }else{
            ans += (1 << bit);
        }
    }
    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...