Advertisement
Guest User

Untitled

a guest
Feb 20th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std ;
  4.  
  5. const int MAXN(10000 + 10);
  6. int n ;
  7. int k ;
  8. int a[MAXN] ;
  9. int p[600] ;
  10. int pri[MAXN] ;
  11.  
  12. int main(){
  13.  
  14.     scanf("%d%d" , &n , &k) ;
  15.  
  16.  
  17.     for(int i = 0 ; i < n ; i ++){
  18.         int x  = 0 ;
  19.         for(int j = 0 ; j <= k ; j ++){
  20.             scanf("%d" , &x) ;
  21.             if(j == 0)
  22.                 pri[i] = x ;
  23.             else{
  24.                 a[i] = a[i]<<1 ;
  25.                 a[i] += x ;
  26.             }
  27.  
  28.         }
  29.         p[a[i]] = pri[i] ;
  30.     }
  31.  
  32.     for(int i = 0 ; i < n ; i ++){
  33.         for(int j = 0 ; j < 1<<k ; j ++){
  34.             if(p[j] != 0){
  35.                 if(p[j|a[i]] == 0) p[j|a[i]] = p[j] + pri[i] ;
  36.                 else p[j|a[i]] = min(p[j|a[i]] , p[j] + pri[i]) ;
  37.             }
  38.         }
  39.     }
  40.  
  41.     printf("%d" , p[(1<<k) - 1]) ;
  42.  
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement