206082026-01-07 19:24:28hunzombiFestés (50 pont)cpp17Time limit exceeded 46/50681ms32360 KiB
#include <bits/stdc++.h>
using namespace std;

const long long INF = 4e18;

int main() {
    int N, M;
    cin >> N >> M;

    vector<long long> R(N);
    vector<vector<vector<long long>>> C(M, vector<vector<long long>>(N, vector<long long>(N)));

    for (int i=0; i < N; i++) cin >> R[i];
    for (int i=0; i < M; i++) {
        for (int l=0; l < N; l++) {
            for (int r=l; r < N; r++) {
                cin >> C[i][l][r];
            }
        }
    }

    long long answer = LLONG_MAX;

    int FULL = (1 << N) - 1;

    for (int mask = 0; mask <= FULL; mask++) {
        long long cost = 0;
        for (int i=0; i < N; i++) {
            if (mask & (1 << i)) {
                cost += R[i];
            }
        }
        for (int col = 0; col < M; col++) {
            vector<long long> dp(1 << N, INF);
            dp[mask] = 0;

            for (int cur = 0; cur <= FULL; cur++) {
                if (dp[cur] == INF) continue;

                for (int l = 0; l < N; l++) {
                    for (int r = l; r < N; r++) {
                        int seg = 0;
                        for (int k = l; k <= r; k++) {
                            seg |= (1 << k);
                        }
                        int nxt = cur | seg;
                        dp[nxt] = min(dp[nxt], dp[cur] + C[col][l][r]);
                    }
                }
            }
            cost += dp[FULL];
            if (cost >= answer) break;
        }
        answer = min(answer, cost);
    }

    cout << answer << '\n';

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base46/50
1Accepted0/01ms508 KiB
2Accepted0/01ms316 KiB
3Accepted2/2335ms19764 KiB
4Accepted2/21ms316 KiB
5Accepted3/36ms564 KiB
6Accepted2/250ms3620 KiB
7Accepted2/2529ms32308 KiB
8Accepted2/2515ms32308 KiB
9Accepted2/2513ms32320 KiB
10Accepted2/2569ms32308 KiB
11Time limit exceeded0/2633ms32260 KiB
12Accepted2/2558ms29748 KiB
13Accepted2/2570ms29788 KiB
14Accepted2/2130ms15352 KiB
15Accepted3/3136ms15280 KiB
16Accepted3/3270ms19764 KiB
17Accepted2/2277ms19760 KiB
18Accepted3/3256ms19816 KiB
19Accepted2/2474ms29236 KiB
20Accepted2/2522ms30772 KiB
21Accepted2/2596ms32052 KiB
22Accepted2/2507ms32356 KiB
23Accepted2/2493ms32312 KiB
24Accepted2/2541ms32308 KiB
25Time limit exceeded0/2681ms32360 KiB