Submission #897248

#TimeUsernameProblemLanguageResultExecution timeMemory
897248TahirAliyevBali Sculptures (APIO15_sculpture)C++17
71 / 100
30 ms952 KiB
#include <bits/stdc++.h>

#define ll long long
#define oo 1e9
#define pii pair<int, int>

using namespace std;

const int MAX = 105;

int n, a, b;
int arr[MAX];
ll pre[MAX];
int dp[MAX][MAX];
ll cur = 0;

bool rec(int i, int k, int bit){
    if(i == n + 1){
        if(k >= a && k <= b) return 1;
        else return 0;
    }
    if(dp[i][k] != -1) return dp[i][k];
    for(int j = i + 1; j <= n + 1; j++){
        if((cur | (pre[j - 1] - pre[i - 1])) >> bit << bit == cur && rec(j, k + 1, bit)){
            return dp[i][k] = 1;
        }
    }
    return dp[i][k] = 0;
}

int main(){
    cin >> n >> a >> b;
    for(int i = 1; i <= n; i++){
        cin >> arr[i];
        pre[i] = pre[i - 1] + arr[i];
    }
    for(int B = 40; B >= 0; B--){
        memset(dp, -1, sizeof(dp));
        if(!rec(1, 0, B)){
            cur |= (1ll << B);
        }
    }
    cout << cur << '\n';
}

Compilation message (stderr)

sculpture.cpp: In function 'bool rec(int, int, int)':
sculpture.cpp:25:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   25 |             return dp[i][k] = 1;
      |                    ~~~~~~~~~^~~
sculpture.cpp:28:21: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   28 |     return dp[i][k] = 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...