Submission #671135

#TimeUsernameProblemLanguageResultExecution timeMemory
671135fatemetmhrBali Sculptures (APIO15_sculpture)C++17
100 / 100
76 ms340 KiB
// fikhshal chye daram code miznm :}

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

#define all(x) x.begin(), x.end()
#define pb     push_back
#define fi     first
#define se     second

const int maxn5 = 2e3 + 10;
const int maxn3 = 105;
const int lg    = 41;

int n, ln, rn, dp[maxn5], a[maxn5];
bool av[maxn3][maxn3];

inline bool check(ll lim){
    if(ln == 1){
        for(int i = 0; i < n; i++){
            ll cur = 0;
            dp[i] = rn + 1;
            for(int j = i; j; j--){
                cur += a[j];
                if((cur | lim) == lim)
                    dp[i] = min(dp[i], dp[j - 1] + 1);
            }
            cur += a[0];
            if((cur | lim) == lim)
                dp[i] = 1;
        }
        return dp[n - 1] <= rn;
    }
    memset(av, false, sizeof av);
    for(int i = 0; i < n; i++){
        ll cur = 0;
        for(int j = i; j; j--){
            cur += a[j];
            if((cur | lim) == lim){
                for(int k = 0; k < rn; k++){
                    av[i][k + 1] |= av[j - 1][k];
                }
            }
        }
        cur += a[0];
        if((cur | lim) == lim){
            av[i][1] = true;
        }
    }
    bool re = false;
    for(int i = ln; i <= rn; i++)
        re |= av[n - 1][i];
    return re;
}

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); 

    cin >> n >> ln >> rn;

    for(int i = 0; i < n; i++)
        cin >> a[i];

    ll cur = (1LL << lg) - 1;
    for(int i = lg - 1; i >= 0; i--){
        if(check(cur ^ (1LL << i)))
            cur ^= (1LL << i);
    }

    cout << cur << endl;

}

/*
    4 1 3
    7 10 6 14
*/
#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...