Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- typedef long long int ll;
- ll const inf = 1e18;
- int n,k;
- ll cost[10010];
- int jobs[10010];
- ll min(ll a,ll b){
- return (a < b ? a : b);
- }
- ll dp[10010][256];
- ll cal(int i,int check){
- if(check == (1<<k)-1){
- return 0;
- }
- if(i == n){
- return (check == (1<<k)-1 ? 0 : inf);
- }
- // if(dp[i][check] != -1)return dp[i][check];
- ll ans = min(cal(i+1,check) , cal(i+1,check | jobs[i]) + cost[i]);
- // printf("Test (%d,%d) = %lld\n",i,check,ans);
- return/* dp[i][check] = */ans;//min(cal(i+1,check) , cal(i+1,check | jobs[i]) + cost[i]);
- }
- int main()
- {
- // for(int i = 0 ; i < 10010 ; i ++)for(int j = 0 ; j < 256 ; j ++)dp[i][j] = -1;
- scanf("%d %d",&n,&k);
- for(int i = 0 ; i < n ; i ++){
- scanf("%lld",&cost[i]);
- for(int j = k-1 ; j >= 0 ; j --){
- int x;
- scanf("%d",&x);
- jobs[i] += x*(1<<j);
- }
- }
- // printf("Cost : ");for(int i = 0 ; i < n ; i ++)printf("%lld ",cost[i]);printf("\n");
- // printf("Jobs : ");for(int i = 0 ; i < n ; i ++)printf("%d ",jobs[i]);printf("\n");
- printf("%lld",cal(0,0));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement