143782025-01-10 17:47:49UVinceFestés (50 pont)cpp17Wrong answer 4/50232ms26216 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n,m;
    cin>>n>>m;

    vector<int> rcost(n);
    for (auto &i : rcost) cin>>i;
    vector<vector<vector<int>>> ccost(m, vector<vector<int>> (n, vector<int> (n, -1)));
    for (auto &c : ccost){
        for (int i=0;i<n;i++){
            for (int j=i;j<n;j++){
                cin>>c[i][j];
            }
        }
    }
    

    int ans=INT_MAX;

    for (int bitmask=0;bitmask<(1<<n);bitmask++){
        int cost=0;
        for (int i=0;i<n;i++) if ((bitmask>>i) & 1) cost+=rcost[i];
        for (int i=0;i<m;i++){
            vector<int> dp(n+1, INT_MAX);
            dp[0]=0;
            for (int j=1;j<=n;j++) {
                if ((bitmask>>(j-1)) & 1) dp[j]=dp[j-1];
                else {
                    dp[j]=ccost[i][0][j-1];
                    for (int k=2;k<=j;k++){
                        dp[j]=min(dp[j], dp[k-1]+ccost[i][k-1][j-1]);
                    }
                }
            }
            cost+=dp[n];
        }
        ans=min(ans,cost);
    }
    cout<<ans;
}
SubtaskSumTestVerdictTimeMemory
base4/50
1Accepted0/01ms316 KiB
2Wrong answer0/01ms316 KiB
3Wrong answer0/2129ms19768 KiB
4Wrong answer0/21ms316 KiB
5Wrong answer0/33ms568 KiB
6Wrong answer0/220ms2988 KiB
7Accepted2/2231ms26052 KiB
8Wrong answer0/2215ms26216 KiB
9Wrong answer0/2232ms26160 KiB
10Wrong answer0/2216ms26164 KiB
11Wrong answer0/2214ms25956 KiB
12Wrong answer0/2210ms23888 KiB
13Wrong answer0/2206ms23860 KiB
14Accepted2/272ms15156 KiB
15Wrong answer0/374ms15220 KiB
16Wrong answer0/3123ms19804 KiB
17Wrong answer0/2129ms19764 KiB
18Wrong answer0/3123ms19752 KiB
19Wrong answer0/2209ms23604 KiB
20Wrong answer0/2204ms24912 KiB
21Wrong answer0/2216ms25912 KiB
22Wrong answer0/2231ms26164 KiB
23Wrong answer0/2231ms26164 KiB
24Wrong answer0/2216ms26164 KiB
25Wrong answer0/2223ms26164 KiB