199792025-12-30 20:24:03KristófFestés (50 pont)cpp17Hibás válasz 0/50165ms12168 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, M;
    cin >> N >> M;
    vector<long long> R(N);
    for (int i = 0; i < N; i++) cin >> R[i];

    vector<vector<long long>> C(M, vector<long long>(N*(N+1)/2));
    for (int j = 0; j < M; j++)
        for (int k = 0; k < N*(N+1)/2; k++)
            cin >> C[j][k];

    int full = (1 << N) - 1;
    vector<long long> dp(1 << N, LLONG_MAX);
    dp[0] = 0;

    for (int j = 0; j < M; j++) {
        vector<long long> new_dp = dp;
        int idx = 0;
        for (int l = 0; l < N; l++) {
            for (int r = l; r < N; r++) {
                int mask = 0;
                for (int i = l; i <= r; i++) mask |= (1 << i);
                for (int s = 0; s < (1 << N); s++) {
                    if (dp[s] != LLONG_MAX) {
                        new_dp[s | mask] = min(new_dp[s | mask], dp[s] + C[j][idx]);
                    }
                }
                idx++;
            }
        }

        // ALSO consider painting full rows in this column step
        for (int s = 0; s < (1 << N); s++) {
            if (new_dp[s] == LLONG_MAX) continue;
            for (int i = 0; i < N; i++) {
                int ns = s | (1 << i);
                new_dp[ns] = min(new_dp[ns], new_dp[s] + R[i]);
            }
        }

        dp = new_dp;
    }

    cout << dp[full] << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/01ms500 KiB
3Hibás válasz0/293ms9012 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/32ms316 KiB
6Hibás válasz0/216ms1588 KiB
7Hibás válasz0/2158ms11952 KiB
8Hibás válasz0/2158ms12084 KiB
9Hibás válasz0/2157ms12168 KiB
10Hibás válasz0/2157ms12084 KiB
11Hibás válasz0/2158ms12084 KiB
12Hibás válasz0/2144ms11060 KiB
13Hibás válasz0/2151ms11296 KiB
14Hibás válasz0/250ms5684 KiB
15Hibás válasz0/352ms5716 KiB
16Hibás válasz0/390ms9012 KiB
17Hibás válasz0/286ms8924 KiB
18Hibás válasz0/387ms9028 KiB
19Hibás válasz0/2143ms10804 KiB
20Hibás válasz0/2150ms11576 KiB
21Hibás válasz0/2158ms11828 KiB
22Hibás válasz0/2158ms12084 KiB
23Hibás válasz0/2159ms12084 KiB
24Hibás válasz0/2158ms12084 KiB
25Hibás válasz0/2165ms12084 KiB