227032026-01-15 16:56:20szjFestés (50 pont)cpp17Accepted 50/50393ms19968 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, m, i, a, b, mi=LLONG_MAX, j;
ll r[5], c[100001][5][5], t[5];
bool sor[5];

void cuccos()
{
    ll a=0;
    for(i=1; i<=n; i++)if(sor[i])a+=r[i];
    for(i=1; i<=m; i++)
    {
        fill(t, t+5, LLONG_MAX);
        t[0]=0;
        for(j=1; j<=n; j++)
        {
            if(sor[j])t[j]=t[j-1];
            b=LLONG_MAX;
            for(int l=j; l>0; l--)
            {
                b=min(b, t[l-1]);
                t[j]=min(c[i][l][j]+b, t[j]);
            }
        }
        a+=t[n];
    }
    mi = min(a, mi);
}
void comb(int ize)
{
    if(ize>n)
    {
        cuccos();
        return;
    }
    sor[ize]=1;
    comb(ize+1);
    sor[ize]=0;
    comb(ize+1);
}
int main()
{
    cin >> n >> m;
    for(i=1; i<=n; i++)cin >> r[i];
    for(i=1; i<=m; i++)
    {
        for(a=1; a<=n; a++)
        {
            for(b=a; b<=n; b++)
            {
                cin >> c[i][a][b];
            }
        }
    }
    comb(1);
    cout << mi;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/2226ms19764 KiB
4Accepted2/21ms316 KiB
5Accepted3/34ms564 KiB
6Accepted2/232ms2356 KiB
7Accepted2/2361ms19968 KiB
8Accepted2/2347ms19776 KiB
9Accepted2/2356ms19764 KiB
10Accepted2/2349ms19732 KiB
11Accepted2/2363ms19788 KiB
12Accepted2/2328ms18228 KiB
13Accepted2/2349ms18228 KiB
14Accepted2/2112ms19764 KiB
15Accepted3/3125ms19936 KiB
16Accepted3/3206ms19764 KiB
17Accepted2/2200ms19760 KiB
18Accepted3/3196ms19812 KiB
19Accepted2/2303ms17972 KiB
20Accepted2/2324ms18744 KiB
21Accepted2/2347ms19764 KiB
22Accepted2/2344ms19764 KiB
23Accepted2/2352ms19764 KiB
24Accepted2/2347ms19876 KiB
25Accepted2/2393ms19752 KiB