Advertisement
mickypinata

TOCPC2021: Guitar

Nov 24th, 2021
1,009
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long lli;
  5.  
  6. const int N = 300 + 5;
  7.  
  8. lli dp[N][N][N];
  9. int cost[N][N], music[N];
  10.  
  11. int main(){
  12.  
  13.     int nString, nMusic, limCut;
  14.     scanf("%d%d%d", &nString, &nMusic, &limCut);
  15.     for(int i = 1; i <= nString; ++i){
  16.         for(int j = 1; j <= nString; ++j){
  17.             scanf("%d", &cost[i][j]);
  18.         }
  19.     }
  20.     for(int i = 1; i <= nMusic; ++i){
  21.         scanf("%d", &music[i]);
  22.     }
  23.     for(int i = nMusic; i >= 1; --i){
  24.         for(int j = 0; j <= limCut; ++j){
  25.             for(int k = 0; k <= nString; ++k){
  26.                 lli mn = 1e18;
  27.                 if(j >= 1){
  28.                     mn = min(mn, dp[i + 1][j - 1][k]);
  29.                 }
  30.                 dp[i][j][k] = min(mn, cost[k][music[i]] + dp[i + 1][j][music[i]]);
  31.             }
  32.         }
  33.     }
  34.     cout << dp[1][limCut][0];
  35.  
  36.     return 0;
  37. }
  38.  
Advertisement
RAW Paste Data Copied
Advertisement