133112025-01-07 13:40:41AblablablaFestés (50 pont)cpp17Wrong answer 2/50691ms88204 KiB
#include <bits/stdc++.h>

using namespace std;

const int INF = 2e9 + 7;

int n, m;
vector<vector<vector<int>>> oszlop, dp;

int megold(int mask, int sor, int osz){
    if(osz == m){
        return 0;
    }
    if(dp[mask][sor][osz] != -1){
        return dp[mask][sor][osz];
    }

    dp[mask][sor][osz] = INF;

    if(mask & (1 << sor)){
        if(sor == n - 1){
            dp[mask][sor][osz] = min(dp[mask][sor][osz], megold(mask, 0, osz + 1));
        } else{
            dp[mask][sor][osz] = min(dp[mask][sor][osz], megold(mask, sor + 1, osz));
        }
    }

    for(int k = sor; k < n - 1; k++){
        dp[mask][sor][osz] = min(dp[mask][sor][osz], megold(mask, k, osz) + oszlop[osz][sor][k]);
    }
    dp[mask][sor][osz] = min(dp[mask][sor][osz], megold(mask, 0, osz + 1) + oszlop[osz][sor][n - 1]);

    return dp[mask][sor][osz];
}

int main()
{
    cin >> n >> m;

    vector<int> sor(n);
    for(int &x : sor) cin >> x;

    oszlop.assign(m, vector<vector<int>>(n, vector<int>(n, 0)));
    for(int i = 0; i < m; i++){
        for(int j = 0; j < n; j++){
            for(int k = j; k < n; k++){
                cin >> oszlop[i][j][k];
            }
        }
    }

    dp.assign((1 << n), vector<vector<int>>(n, vector<int>(m, -1)));
    int ans = INF;

    for(int i = 0; i < (1 << n); i++){
        int akt = megold(i, 0, 0);
        for(int j = 0; j < n; j++){
            if(i & (1 << j)){
                akt += sor[j];
            }
        }

        ans = min(ans, akt);
    }

    cout << ans << "\n";
}
SubtaskSumTestVerdictTimeMemory
base2/50
1Accepted0/01ms316 KiB
2Wrong answer0/01ms500 KiB
3Wrong answer0/2381ms56080 KiB
4Wrong answer0/21ms316 KiB
5Wrong answer0/36ms1088 KiB
6Wrong answer0/257ms9012 KiB
7Time limit exceeded0/2669ms87248 KiB
8Time limit exceeded0/2689ms87180 KiB
9Time limit exceeded0/2666ms87180 KiB
10Time limit exceeded0/2691ms87436 KiB
11Time limit exceeded0/2670ms87180 KiB
12Time limit exceeded0/2677ms80020 KiB
13Time limit exceeded0/2633ms80428 KiB
14Accepted2/2175ms35484 KiB
15Wrong answer0/3177ms35484 KiB
16Wrong answer0/3326ms55572 KiB
17Wrong answer0/2361ms55640 KiB
18Wrong answer0/3356ms55484 KiB
19Wrong answer0/2569ms78164 KiB
20Time limit exceeded0/2624ms82672 KiB
21Time limit exceeded0/2685ms86432 KiB
22Time limit exceeded0/2684ms87176 KiB
23Time limit exceeded0/2661ms87348 KiB
24Time limit exceeded0/2667ms87124 KiB
25Time limit exceeded0/2690ms88204 KiB