Advertisement
OMEGAHEAD_MonkoX

Untitled

Mar 21st, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <sstream>
  5. #include <algorithm>
  6. #include <vector>
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <fstream>
  10. #include <stack>
  11. #include <map>
  12. #include <cstring>
  13. #include <cmath>
  14. #include <set>
  15. #include <iterator>
  16. #include <cmath>
  17. #include <locale>
  18. #include <queue>
  19. #include <deque>
  20. #include <stack>
  21.  
  22.  
  23. using namespace std;
  24.  
  25.  
  26.  
  27. const int MOD = 1e6+7;
  28.  
  29. void VIVOD(vector<vector<long long int> > vec2, int n, int m)
  30. {
  31. for (auto i = 0; i < n; ++i)
  32. {
  33. for(auto j = 0; j < m; ++j)
  34. {
  35. cout << vec2[i][j] << " ";
  36. }
  37. cout << endl;
  38. }
  39. }
  40.  
  41.  
  42.  
  43. int main()
  44. {
  45. long long int N, n, a;
  46. cin >> N >> n;
  47. vector<long long int> vec;
  48. for (auto i = 0; i < N; ++i)
  49. {
  50. cin >> a;
  51. vec.push_back(a);
  52. }
  53. vector<vector<long long int> > vec2(vec.size() + 1, vector<long long int> (n + 1, 0));
  54. for (auto i = 1; i < n + 1; ++i)
  55. {
  56. if (i >= vec[0])
  57. {
  58. vec2[0][i] = vec[0];
  59. }
  60. }
  61.  
  62. for (auto i = 1; i < vec.size(); ++i)
  63. {
  64. for(auto j = 1; j < n + 1; ++j)
  65. {
  66. if (j < vec[i])
  67. vec2[i][j] = vec2[i - 1][j];
  68. else
  69. vec2[i][j] = max(vec2[i - 1][j], vec[i] + vec2[i - 1][j - vec[i]]);
  70. }
  71. }
  72. /*
  73. if (vec2[vec.size() - 1][n] == n)
  74. {
  75. cout << "YES";
  76. return 0;
  77. }
  78. cout << "NO";
  79. */
  80. cout << vec2[vec.size() - 1][n];
  81. //VIVOD(vec2, vec.size(), n + 1);
  82. return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement