Submission #1368498

#TimeUsernameProblemLanguageResultExecution timeMemory
1368498serendipitousBali Sculptures (APIO15_sculpture)C++20
0 / 100
0 ms344 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int N = 50, B = 20;
ll min_beauty[B+1][N+1];

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int n, a, b; cin >> n >> a >> b;
    vector<int> y(n+1); for(int i = 1; i <= n; ++i) cin >> y[i];

    for(int i = 1; i <= B; ++i) {
        for(int j = 1; j <= N; ++j) {
            min_beauty[i][j] = LLONG_MAX;
        }
    }

    ll b1_sum = 0;
    for(int i = 1; i <= n; ++i) {
        b1_sum += y[i];
        min_beauty[1][i] = b1_sum;
    }
    for(int x = 2; x <= b; ++x) { // add xth block
        for(int r = 1; r <= n; ++r) { // ending point of block
            ll block_sum = 0;
            for(int l = r; l >= x; --l) { // starting point
                block_sum += y[l];
                min_beauty[x][r] = min(min_beauty[x][r], min_beauty[x-1][l-1] | block_sum);
            }
        }
    }

    // for(int i = 1; i <= B; ++i) {
    //     for(int j = 1; j <= N; ++j) {
    //         cout << (min_beauty[i][j] == LLONG_MAX ? -1 : min_beauty[i][j]) << ' ';
    //     }
    //     cout << endl;
    // }

    ll ans = LLONG_MAX;
    for(int x = a; x <= b; ++x) {
        ans = min(ans, min_beauty[x][n]);
    }
    cout << ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...