제출 #587294

#제출 시각아이디문제언어결과실행 시간메모리
587294VanillaBali Sculptures (APIO15_sculpture)C++17
0 / 100
131 ms1024 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long int64;
const int maxn = 1e2 + 2;
const int maxbit = 201;
int64 dp[maxn][maxn][maxbit];
int64 pref [maxn];
int64 arr[maxn];

int main() {
    int n,a,b;
    cin >> n >> a >> b;
    for (int i = 1; i <= n; i++){
        cin >> arr[i];
        pref[i] = pref[i-1] + arr[i];
        dp[i][1][pref[i]] = 1;
    }
    for (int k = 2; k <= b; k++){
        for (int r = 1; r <= n; r++){
            for (int l = 1; l <= r; l++){
                for (int ans = 0; ans < maxbit; ans++){
                    for (int to = 0; to < maxbit; to++){
                        if (((to | (pref[r] - pref[l - 1])) == ans)) dp[r][k][ans] |= dp[l-1][k-1][to];
                    }
                }
            }
        }
    }
    // for (int i = 1; i <= b; i++){
    //     for (int j = 1; j <= n; j++){
    //         cout << setw(10) << dp[j][i] << " ";
    //     }
    //     cout << "\n";
    // }
    int64 rs = 1e15;
    for (int i = a; i <= b; i++){
        for (int j = 0; j < maxbit; j++)
            rs = min(rs, dp[n][i][j] ? j: (int64) 1e15);
    }
    cout << rs << "\n";
    
    return 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...