136972025-01-08 12:51:29AblablablaFestés (50 pont)cpp17Wrong answer 8/50449ms27892 KiB
#include <bits/stdc++.h>

using namespace std;

const int INF = 2e9 + 7;

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

    int ans = 0;
    vector<int> sor(n);
    for(int &x : sor){
        cin >> x;
        ans += x;
    }

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

    for(int j = 0; j < m; j++){
        for(int i = 0; i < n; i++){
            for(int k = n - 1; k >= 0; k--){
                int a = INF, b = INF;

                if(0 < i - 1) a = oszlop[i - 1][j][k];

                if(k + 1 < n) b = oszlop[i][j][k + 1];

                oszlop[i][j][k] = min(oszlop[i][j][k], min(a, b));
            }
        }
    }

    vector<vector<int>> dp(n + 1, vector<int>(m, INF));

    for(int mask = 0; mask < (1 << n); mask++){
        dp[n][m - 1] = 0;
        for(int j = m - 1; j >= 0; j--){
            if(j != m - 1){
                dp[n][j] = dp[0][j + 1];
            }

            for(int i = n - 1; i >= 0; i--){

                if(mask & (1 << i)){
                    dp[i][j] = min(dp[i][j], dp[i + 1][j]);
                }

                for(int k = i; k < n; k++){
                    dp[i][j] = min(dp[i][j], dp[k + 1][j] + oszlop[i][j][k]);
                }
            }
        }

        int plusz = 0;
        for(int i = 0; i < n; i++){
            if(mask & (1 << i)){
                plusz += sor[i];
            }
        }

        //cout << mask << " " << dp[0][0] + plusz << "\n";

        /*for(auto x : dp){
            for(int y : x){
                cout << y << " ";
            }
            cout << "\n";
        }*/

        ans = min(ans, dp[0][0] + plusz);
    }

    cout << ans << "\n";
}
SubtaskSumTestVerdictTimeMemory
base8/50
1Accepted0/01ms500 KiB
2Accepted0/01ms316 KiB
3Wrong answer0/2266ms22324 KiB
4Wrong answer0/21ms316 KiB
5Wrong answer0/34ms672 KiB
6Wrong answer0/235ms2936 KiB
7Accepted2/2402ms27712 KiB
8Accepted2/2391ms27648 KiB
9Wrong answer0/2402ms27700 KiB
10Wrong answer0/2402ms27700 KiB
11Wrong answer0/2393ms27704 KiB
12Wrong answer0/2360ms25396 KiB
13Wrong answer0/2393ms25404 KiB
14Accepted2/2133ms16692 KiB
15Wrong answer0/3131ms16692 KiB
16Wrong answer0/3229ms22328 KiB
17Wrong answer0/2237ms22152 KiB
18Wrong answer0/3233ms22324 KiB
19Wrong answer0/2333ms24884 KiB
20Wrong answer0/2361ms26420 KiB
21Wrong answer0/2395ms27444 KiB
22Wrong answer0/2402ms27700 KiB
23Accepted2/2386ms27892 KiB
24Wrong answer0/2377ms27700 KiB
25Wrong answer0/2449ms27700 KiB