Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<algorithm>
  3. using namespace std;
  4. int dp[1000][1000],p[1000],w[1000],n,l;
  5. int knapsack(int i,int limit)
  6. {
  7. if(limit<0) return -10000000;
  8. printf("K\n");
  9. if(i==n) return 0;
  10. if(dp[i][limit]!=-1) return dp[i][limit];
  11. int a,b;
  12. a=p[i]+knapsack(i+1,limit-w[i]);
  13. b=knapsack(i+1,limit);
  14. dp[i][limit]=max(a,b);
  15. return dp[i][limit];
  16. }
  17. main()
  18. {
  19. int t,i,j,mw[1000],g;
  20. scanf("%d",&t);
  21. for(int x=0;x<t;x++)
  22. {
  23. scanf("%d",&n);
  24. for(i=0;i<n;i++)
  25. {
  26. scanf("%d %d",&p[i],&w[i]);
  27. }
  28. scanf("%d",&g);
  29. for(i=0;i<g;i++) scanf("%d",&mw[i]);
  30. for(i=0;i<n;i++)
  31. {
  32. for(j=0;j<n;j++)
  33. {
  34. dp[i][j]=-1;
  35. }
  36. }
  37. int sum=0;
  38. for(i=0;i<g;i++)
  39. {
  40. sum+=knapsack(0,mw[i]);
  41. }
  42. printf("%d\n",sum);
  43. }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement