206192026-01-07 20:59:16hunzombiFestés (50 pont)cpp17Accepted 50/50426ms6592 KiB
#include <bits/stdc++.h>
using namespace std;

const long long INF = 4e18;

int row_cost[4];
int col_cost[100000][4][4];

int main() {

    int n, m;
    cin >> n >> m;

    for (int i=0; i < n; i++) {
        cin >> row_cost[i];
    }

    for (int i=0; i < m; i++) {
        for (int l = 0; l < n; l++) {
            for (int r = l; r < n; r++) {
                cin >> col_cost[i][l][r];
            }
        }
    }

    int full_mask = (1 << n) - 1;
    long long answer = INF;

    for (int mask = 0; mask <= full_mask; mask++) {
        long long cost = 0;
        for (int row = 0; row < n; row++) {
            if (mask & (1 << row)) {
                cost += row_cost[row];
            }
        }

        for(int col = 0; col < m; col++) {
            vector<long long> dp(n + 1, INF);
            dp[0] = 0;

            for (int i = 1; i <= n; i++) {
                if (mask & (1 << (i - 1))) {
                    dp[i] = dp[i - 1];
                } else {
                    for (int l = 0; l <= i - 1; l++) {
                        for (int r = l; r < n; r++) {
                            if (i - 1 >= l && i - 1 <= r) {
                                dp[i] = min(dp[i], dp[l] + col_cost[col][l][r]);
                            }
                        }
                    }
                }
            }
            cost += dp[n];
        }
        answer = min(answer, cost);
    }

    cout << answer << '\n';

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/2234ms6448 KiB
4Accepted2/21ms500 KiB
5Accepted3/34ms464 KiB
6Accepted2/235ms884 KiB
7Accepted2/2386ms6556 KiB
8Accepted2/2375ms6492 KiB
9Accepted2/2381ms6452 KiB
10Accepted2/2379ms6452 KiB
11Accepted2/2379ms6452 KiB
12Accepted2/2347ms5940 KiB
13Accepted2/2370ms5940 KiB
14Accepted2/2111ms6452 KiB
15Accepted3/3112ms6452 KiB
16Accepted3/3204ms6452 KiB
17Accepted2/2206ms6540 KiB
18Accepted3/3202ms6452 KiB
19Accepted2/2328ms6024 KiB
20Accepted2/2349ms6268 KiB
21Accepted2/2368ms6440 KiB
22Accepted2/2370ms6452 KiB
23Accepted2/2372ms6452 KiB
24Accepted2/2363ms6452 KiB
25Accepted2/2426ms6592 KiB