137042025-01-08 12:59:47AblablablaFestés (50 pont)cpp17Hibás válasz 8/50456ms35820 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const ll INF = 4e18 + 7;

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

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

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

    for(ll j = 0; j < m; j++){
        for(ll i = 0; i < n; i++){
            for(ll k = n - 1; k >= 0; k--){
                ll 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<ll>> dp(n + 1, vector<ll>(m, INF));

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

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

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

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

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

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

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

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

    cout << ans << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms320 KiB
3Hibás válasz0/2263ms22324 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/34ms564 KiB
6Hibás válasz0/237ms3892 KiB
7Elfogadva2/2437ms35456 KiB
8Elfogadva2/2435ms35640 KiB
9Hibás válasz0/2409ms35636 KiB
10Hibás válasz0/2411ms35420 KiB
11Hibás válasz0/2442ms35488 KiB
12Hibás válasz0/2400ms32604 KiB
13Hibás válasz0/2398ms32588 KiB
14Elfogadva2/2130ms16692 KiB
15Hibás válasz0/3134ms16692 KiB
16Hibás válasz0/3239ms22324 KiB
17Hibás válasz0/2234ms22312 KiB
18Hibás válasz0/3238ms22168 KiB
19Hibás válasz0/2347ms32052 KiB
20Hibás válasz0/2400ms33892 KiB
21Hibás válasz0/2442ms35124 KiB
22Hibás válasz0/2404ms35640 KiB
23Elfogadva2/2407ms35636 KiB
24Hibás válasz0/2414ms35820 KiB
25Hibás válasz0/2456ms35584 KiB