Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<algorithm>
- using namespace std;
- int dp[1000][1000],p[1000],w[1000],n,l;
- int knapsack(int i,int limit)
- {
- if(limit<0) return -10000000;
- printf("K\n");
- if(i==n) return 0;
- if(dp[i][limit]!=-1) return dp[i][limit];
- int a,b;
- a=p[i]+knapsack(i+1,limit-w[i]);
- b=knapsack(i+1,limit);
- dp[i][limit]=max(a,b);
- return dp[i][limit];
- }
- main()
- {
- int t,i,j,mw[1000],g;
- scanf("%d",&t);
- for(int x=0;x<t;x++)
- {
- scanf("%d",&n);
- for(i=0;i<n;i++)
- {
- scanf("%d %d",&p[i],&w[i]);
- }
- scanf("%d",&g);
- for(i=0;i<g;i++) scanf("%d",&mw[i]);
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- dp[i][j]=-1;
- }
- }
- int sum=0;
- for(i=0;i<g;i++)
- {
- sum+=knapsack(0,mw[i]);
- }
- printf("%d\n",sum);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement