제출 #897253

#제출 시각아이디문제언어결과실행 시간메모리
897253TahirAliyevBali Sculptures (APIO15_sculpture)C++17
9 / 100
1069 ms600 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];
ll cur = 0;

int dp[MAX][MAX];

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 dp2[MAX];

int rec2(int i, int bit){
    if(i == n + 1) return 0;
    if(dp2[i] != -1) return dp2[i];
    int ans = oo;
    for(int j = i + 1; j <= n + 1; j++){
        if((cur | (pre[j - 1] - pre[i - 1])) >> bit << bit == cur){
            ans = min(1 + rec2(j, bit), ans);
        }
    }
    return ans;
}

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--){
        if(a == 1){
            memset(dp2, -1, sizeof(dp2));
            if(rec2(1, B) > b){
                cur |= (1ll << B);
            }
        }
        else{
            memset(dp, -1, sizeof(dp));
            if(!rec(1, 0, B)){
                cur |= (1ll << B);
            }
        }
    }
    cout << cur << '\n';
}

컴파일 시 표준 에러 (stderr) 메시지

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