#include <iostream> #include <cstdio> using namespace std; const int maxn = 1000; int v[maxn]; int w[maxn]; int n = 0, W1= 0; int cou = 0; int m(int i, int j) { cou++; printf("m(%d, %d)\n", i, j); if (i == n){ return 0; } if (w[i] > j) { return m(i+1, j); } return max(m(i+1, j-w[i])+v[i], m(i+1, j)); } int main() { while (scanf("%d%d", &n, &W1)==2) { for (int i = 0; i < n; i++) { scanf("%d", &v[i]); } for (int i = 0; i < n; i++) { scanf("%d", &w[i]); } int maxval = m(0, W1); printf("%d\n", maxval); printf("cou = %d\n", cou); } return 0; }