Advertisement
theo830

μονευ.ψππ

May 17th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. #include<queue>
  4. #include<algorithm>
  5. using namespace std;
  6. long long printknapSack(long long W, long long val[], long long n,long long y){
  7. long long i, w;
  8. long long x=0;
  9. bool K[n + 1][W + 1];
  10. for (i = 0; i <= n; i++) {
  11. for (w = 0; w <= W; w++) {
  12. K[i][w]=0;
  13. if(i == 0 && w == 0){
  14. K[i][w] = 1;
  15. }
  16. else if (i == 0 || w == 0){
  17. K[i][w] = 0;
  18. }
  19. else{
  20. K[i][w] = max(K[i - 1][w - val[i - 1]], K[i - 1][w]);
  21. }
  22. }
  23. }
  24. if(W % 2 == 1){
  25. W--;
  26. }
  27. while(K[n][W] != 1 || K[n][W/2] != 1){
  28. W-=2;
  29. }
  30. return W;
  31. }
  32. int main(){
  33. long long n;
  34. cin>>n;
  35. long long val[n];
  36. long long y=0;
  37. long long x;
  38. for(long long i=0;i<n;i++){
  39. cin>>val[i];
  40. y+=val[i];
  41. }
  42. int tr;
  43. tr = printknapSack(y,val,n,y);
  44. if(tr == y){
  45. cout<<tr/2;
  46. }
  47. else{
  48. cout<<(tr/2)+(y - tr);
  49. //cout<<"idfg";
  50. }
  51. return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement