176922025-09-13 15:34:21lalalaFestés (50 pont)cpp17Hibás válasz 25/50532ms38964 KiB
#include <iostream>
#include <vector>
#include <climits>

using namespace std;

int main()
{
    int sor, oszlop;
    cin >> sor >> oszlop;

    vector<long long> r(sor + 1);

    for(int i = 1; i <= sor; i++)
    {
        cin >> r[i];
    }

    vector<vector<vector<long long>>> c(oszlop + 1, vector<vector<long long>>(sor + 1, vector<long long>(sor + 1)));

    for(int j = 1; j <= oszlop; j++)
    {
        for(int l = 1; l <= sor; l++)
        {
            for(int r2 = l; r2 <= sor; r2++)
            {
                long long ertek;
                cin >> ertek;

                c[j][l][r2] = ertek;
            }
        }
    }

    long long minimum = LLONG_MAX;

    for(int mask = 0; mask < (1 << sor); mask++)
    {
        long long eredmeny = 0;
        long long sorosszeg = 0;
        
        vector<bool> b(sor + 1);

        for(int m = 0; m < sor; m++)
        {
            if(((mask >> m) & 1))
            {
                sorosszeg += r[m + 1];
                b[m + 1] = 1;
            }
        }

        for(int o = 1; o <= oszlop; o++)
        {
            vector<long long> dp(sor + 1, LLONG_MAX);
            dp[0] = 0;

            for(int s = 1; s <= sor; s++)
            {
                for(int k = 1; k <= s; k++)
                {
                    for(int j = 1; j <= s - k + 1; j++)
                    {
                        if(b[s])
                        {
                            dp[s] = min(dp[s - k] + c[o][j][s], dp[s - 1]);
                        }else
                        {
                            dp[s] = min(dp[s], dp[s - k] + c[o][j][s]);
                        }
                    }
                }
            }

            eredmeny += dp[sor];
        }

        minimum = min(minimum, eredmeny + sorosszeg);
    }

    cout << minimum;

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base25/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/2305ms32500 KiB
4Elfogadva2/21ms316 KiB
5Hibás válasz0/34ms756 KiB
6Elfogadva2/245ms4148 KiB
7Elfogadva2/2512ms38964 KiB
8Elfogadva2/2510ms38708 KiB
9Hibás válasz0/2495ms38708 KiB
10Hibás válasz0/2513ms38716 KiB
11Elfogadva2/2497ms38452 KiB
12Hibás válasz0/2453ms35380 KiB
13Hibás válasz0/2474ms35380 KiB
14Elfogadva2/2148ms19764 KiB
15Elfogadva3/3150ms19768 KiB
16Hibás válasz0/3294ms32308 KiB
17Elfogadva2/2277ms32504 KiB
18Hibás válasz0/3277ms32308 KiB
19Hibás válasz0/2425ms34868 KiB
20Elfogadva2/2460ms36660 KiB
21Hibás válasz0/2481ms38360 KiB
22Hibás válasz0/2509ms38856 KiB
23Elfogadva2/2488ms38764 KiB
24Elfogadva2/2479ms38764 KiB
25Hibás válasz0/2532ms38764 KiB