Pabon_SEC

Wedding shopping

Apr 28th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define neg -1000000
  3.  
  4. using namespace std;
  5.  
  6. int dp[203][23],price[23][23],M,C;
  7.  
  8. int wedding_shopping(int money,int garment)
  9. {
  10.     if(money<0) return neg;
  11.  
  12.     if(garment==C) return M-money;
  13.  
  14.     if(dp[money][garment]!=-1)
  15.         return dp[money][garment];
  16.  
  17.     int ans = -1;
  18.  
  19.     for(int model=1; model<=price[garment][0]; model++)
  20.     {
  21.         ans = max(ans,wedding_shopping(money-price[garment][model],garment+1));
  22.     }
  23.  
  24.     return dp[money][garment] = ans;
  25. }
  26.  
  27. int main()
  28. {
  29.     int test,i,j,result;
  30.  
  31.     scanf("%d",&test);
  32.  
  33.     while(test--)
  34.     {
  35.         scanf("%d%d",&M,&C);
  36.  
  37.         for(i=0; i<C; i++)
  38.         {
  39.             scanf("%d",&price[i][0]);
  40.  
  41.             for(j=1; j<=price[i][0]; j++)
  42.             {
  43.                 scanf("%d",&price[i][j]);
  44.             }
  45.         }
  46.  
  47.         memset(dp,-1,sizeof(dp));
  48.  
  49.         result = wedding_shopping(M,0);
  50.  
  51.         if(result<0)
  52.         {
  53.             printf("no solution\n");
  54.         }
  55.         else
  56.         {
  57.             printf("%d\n",result);
  58.         }
  59.     }
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment