Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long lli;
- const int N = 300 + 5;
- lli dp[N][N][N];
- int cost[N][N], music[N];
- int main(){
- int nString, nMusic, limCut;
- scanf("%d%d%d", &nString, &nMusic, &limCut);
- for(int i = 1; i <= nString; ++i){
- for(int j = 1; j <= nString; ++j){
- scanf("%d", &cost[i][j]);
- }
- }
- for(int i = 1; i <= nMusic; ++i){
- scanf("%d", &music[i]);
- }
- for(int i = nMusic; i >= 1; --i){
- for(int j = 0; j <= limCut; ++j){
- for(int k = 0; k <= nString; ++k){
- lli mn = 1e18;
- if(j >= 1){
- mn = min(mn, dp[i + 1][j - 1][k]);
- }
- dp[i][j][k] = min(mn, cost[k][music[i]] + dp[i + 1][j][music[i]]);
- }
- }
- }
- cout << dp[1][limCut][0];
- return 0;
- }
Advertisement
RAW Paste Data
Copied
Advertisement