Raslboyy

3090

Aug 4th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <functional>
  6.  
  7. using namespace std;
  8.  
  9. int main() {
  10.     ifstream fin("input.txt");
  11.     ofstream fout("output.txt");
  12.  
  13.     int n, m;
  14.     fin >> n >> m;
  15.     vector<int> c(n+1);
  16.     vector<int> w(n+1);
  17.     for (int i = 1; i <= n; i++) fin >> w[i];
  18.     for (int i = 1; i <= n; i++) fin >> c[i];
  19.     vector<vector<int>> vec(n + 1, vector<int>(m+1));
  20.     for (int i = 1; i <= n; i++)
  21.         for (int j = 1; j <= m; j++) {
  22.             if (w[i] <= j)
  23.                 vec[i][j] = max(vec[i - 1][j], vec[i - 1][j - w[i]] + c[i]);
  24.             else
  25.                 vec[i][j] = vec[i - 1][j];
  26.         }
  27.     function<void(int, int)> print = [&](int i, int j) {
  28.         if (vec[i][j] == 0) return;
  29.         else if (vec[i][j] == vec[i - 1][j]) print(i - 1, j);
  30.         else {
  31.             print(i - 1, j - w[i]);
  32.             fout << i << endl;
  33.         }
  34.     };
  35.     print(n, m);
  36.  
  37.     fin.close();
  38.     fout.close();
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment