Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. #include <fstream>
  2. //#include <algorithm>
  3. #include <vector>
  4.  
  5. #define MAX 5010
  6.  
  7. using namespace std;
  8.  
  9. ifstream fin("input.txt");
  10. ofstream fout("output.txt");
  11.  
  12. //vector<vector<pair <int, vector <int> > > > memo (MAX, vector<pair<int, vector<int> > > (MAX, (-1,(0) ) ) );
  13. vector<vector<int> > memo (MAX, vector<int>(MAX, -1));
  14. //vector<vector<pair<int, int> > > memo1 (MAX, vector<int>(MAX, pair<int, int>(-1,-1)));
  15. vector<vector<pair<int, int> > > memo1 (MAX, vector<pair<int, int > >(MAX, pair<int, int> (-1, -1) ) );
  16. vector<int> arr;
  17.  
  18. int n;
  19.  
  20. int createSol(int i, int k){
  21. int temp;
  22. int a, b, ret;
  23.  
  24. if (i == n && k >= 0)
  25. ret = 0;
  26.  
  27. else if (i == n || k < 0)
  28. ret = -10e5;
  29.  
  30. else if (memo[i][k] != -1)
  31. ret = memo[i][k];
  32.  
  33. else{
  34. a = createSol(i+1, k-arr[i])+ arr[i];
  35. b = createSol(i+1, k);
  36. // memo[i][k] = min(a.first, b.first);
  37.  
  38. ret = a > b ? a : b;
  39.  
  40. memo1[i][k].first = i+1;
  41.  
  42. if(ret == a)
  43. memo1[i][k].second = k-arr[i];
  44. else
  45. memo1[i][k].second = k;
  46.  
  47. memo[i][k] = ret;
  48. }
  49. return ret;
  50. }
  51.  
  52. void printSol(int i, int k){
  53. if (i<n){
  54. if (memo1[i][k].second == k-arr[i])
  55. fout << arr[i] << endl;
  56.  
  57. printSol(memo1[i][k].first, memo1[i][k].second);
  58. }
  59. }
  60.  
  61. int main(){
  62. int k, temp;
  63. // int ret;
  64.  
  65. fin >> n;
  66. fin >> k;
  67.  
  68. for (int i = 0; i < n; i++){
  69. fin >> temp;
  70. arr.push_back(temp);
  71. }
  72.  
  73. //ret = createSol(0, k);
  74. createSol(0, k);
  75. //fout << ret << endl;
  76. printSol(0,k);
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement