Submission #1305511

#TimeUsernameProblemLanguageResultExecution timeMemory
1305511HasanV11010238Bali Sculptures (APIO15_sculpture)C++20
21 / 100
1 ms576 KiB
#include<bits/stdc++.h>
#define ll long long
#define mod 1000000007
using namespace std;
int main(){
    ll n, a, b, ans = 0;
    cin>>n>>a>>b;
    vector<ll> v(n + 1, 0), pr(n + 1, 0);
    for (int i = 1; i <= n; i++){
        cin>>v[i];
        pr[i] = pr[i - 1] + v[i];
    }
    for (int i = 0; i <= 30; i++){
        ans = (ans | (1LL<<i));
    }
    if (a == 1){
        vector<ll> dp(n + 1, 0);
        for (ll ind = 30; ind >= 0; ind--){
            ans = (ans ^ (1LL<<ind));
            dp[0] = 0;
            for (int i = 1; i <= n; i++){
                dp[i] = n + 1;
                for (int j = 0; j < i; j++){
                    ll su = (pr[i] - pr[j]);
                    ll nu = (ans | su);
                    if (nu == ans) dp[i] = min(dp[j] + 1, dp[i]);
                }
            }
            if (dp[n] > b){
                ans = (ans ^ (1LL<<ind));
            }
        }
    }
    else{
        vector<vector<ll>> dp(n + 1, vector<ll>(n + 1, 0));
        for (ll ind = 30; ind >= 0; ind--){
            ans = (ans ^ (1LL<<ind));
            dp[0][0] = 1;
            for (int i = 1; i <= n; i++){
                for (int j = 1; j <= n; j++) dp[i][j] = 0;
                for (int j = 0; j < i; j++){
                    ll su = (pr[i] - pr[j]);
                    ll nu = (ans | su);
                    if (nu == ans){
                        for (int k = 1; k <= n; k++){
                            dp[i][k] = max(dp[i][k], dp[j][k - 1] + 1);
                        }
                    }
                }
            }
            int can = 0;
            for (int i = a; i <= b; i++){
                if (dp[n][i] == 1) can = 1;
            }
            if (can == 0) ans = (ans ^ (1LL<<ind));
        }
    }
    cout<<ans;
}
#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...