Advertisement
SuitNdtie

PROG-1036: Equipped

May 15th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include<stdio.h>
  2. typedef long long int ll;
  3. ll const inf = 1e18;
  4. int n,k;
  5.  
  6. ll cost[10010];
  7. int jobs[10010];
  8.  
  9. ll min(ll a,ll b){
  10.     return (a < b ? a : b);
  11. }
  12.  
  13. ll dp[10010][256];
  14.  
  15. ll cal(int i,int check){
  16.     if(check == (1<<k)-1){
  17.         return 0;
  18.     }
  19.     if(i == n){
  20.         return (check == (1<<k)-1 ? 0 : inf);
  21.     }
  22. //  if(dp[i][check] != -1)return dp[i][check];
  23.     ll ans = min(cal(i+1,check) , cal(i+1,check | jobs[i]) + cost[i]);
  24. //  printf("Test (%d,%d) = %lld\n",i,check,ans);
  25.    
  26.     return/* dp[i][check] = */ans;//min(cal(i+1,check) , cal(i+1,check | jobs[i]) + cost[i]);
  27. }
  28.  
  29. int main()
  30. {
  31. //  for(int i = 0 ; i < 10010 ; i ++)for(int j = 0 ; j < 256 ; j ++)dp[i][j] = -1;
  32.     scanf("%d %d",&n,&k);
  33.     for(int i = 0 ; i < n ; i ++){
  34.         scanf("%lld",&cost[i]);
  35.         for(int j = k-1 ; j >= 0 ; j --){
  36.             int x;
  37.             scanf("%d",&x);
  38.             jobs[i] += x*(1<<j);
  39.         }
  40.     }
  41. //  printf("Cost : ");for(int i = 0 ; i < n ; i ++)printf("%lld ",cost[i]);printf("\n");
  42. //  printf("Jobs : ");for(int i = 0 ; i < n ; i ++)printf("%d ",jobs[i]);printf("\n");
  43.     printf("%lld",cal(0,0));
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement