Submission #331007

#TimeUsernameProblemLanguageResultExecution timeMemory
331007couplefireBali Sculptures (APIO15_sculpture)C++17
100 / 100
533 ms22000 KiB
#include <bits/stdc++.h>
using namespace std;

int n, a, b;
long long arr[2005];
long long prefix[2005];
vector<vector<int>> v;
long long res = 0;

inline long long sum(int i, int j){
    if(i > j) swap(i, j);
    return prefix[j]-prefix[i-1];
}

bool check(vector<vector<int>> &tmp){
    if(n>100){
        int dp[n+1]; fill(dp, dp+n+1, n+1);
        dp[0] = 0;
        for(int i = 1; i<=n; i++){
            for(auto j : tmp[i]) dp[i] = min(dp[j-1]+1, dp[i]);
        }
        if(dp[n] == -1 || dp[n] > b) return false;
        return 1;
    }
    bitset<105> dp[n+1];
    dp[0].reset();
    dp[0].set(0);
    for(int i = 1; i<=n; i++){
        dp[i].reset();
        for(int j : tmp[i]) dp[i] |= (dp[j-1]<<1); 
    }
    for(int i = a; i<=b; i++){
        if(dp[n].test(i)) return 1;
    }
    return 0;
}

int main(){
    // freopen("a.in", "r", stdin);
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> a >> b;
    for(int i = 1; i<=n; i++) cin >> arr[i];
    prefix[0] = 0;
    for(int i = 1; i<=n; i++) prefix[i] = prefix[i-1]+arr[i];
    v.resize(n+1);
    for(int i = 1; i<=n; i++){
        for(int j = i; j<=n; j++){
            v[j].push_back(i);
        }
    }
    for(int m = 60; m>=0; m--){
        vector<vector<int>> tmp;
        tmp.resize(n+1);
        for(int i = 1; i<=n; i++){
            for(auto &x : v[i]){
                if(sum(x, i)&(1ll<<m)) continue;
                else tmp[i].push_back(x);
            }
        }
        if(check(tmp)){
            v = tmp;
        }
        else res += 1ll<<m;
    }
    cout << res << endl;
}
#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...