Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std ;
- const int MAXN(10000 + 10);
- int n ;
- int k ;
- int a[MAXN] ;
- int p[600] ;
- int pri[MAXN] ;
- int main(){
- scanf("%d%d" , &n , &k) ;
- for(int i = 0 ; i < n ; i ++){
- int x = 0 ;
- for(int j = 0 ; j <= k ; j ++){
- scanf("%d" , &x) ;
- if(j == 0)
- pri[i] = x ;
- else{
- a[i] = a[i]<<1 ;
- a[i] += x ;
- }
- }
- p[a[i]] = pri[i] ;
- }
- for(int i = 0 ; i < n ; i ++){
- for(int j = 0 ; j < 1<<k ; j ++){
- if(p[j] != 0){
- if(p[j|a[i]] == 0) p[j|a[i]] = p[j] + pri[i] ;
- else p[j|a[i]] = min(p[j|a[i]] , p[j] + pri[i]) ;
- }
- }
- }
- printf("%d" , p[(1<<k) - 1]) ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement