fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define dd double
  5. #define ld long double
  6. #define ull unsigned long long
  7. #define yes cout << "YES\n"
  8. #define no cout << "NO\n"
  9. #define el "\n"
  10. #define Arwa ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  11. #define fix(x) cout << fixed << setprecision(x)
  12. #define all(v) v.begin(),v.end()
  13. #define dpp(v,val) memset(v,val,sizeof(v))
  14. #define mod 1e9+7
  15. #define oo 1e9
  16. const int N = 1e5 + 5;
  17. int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } // log(n) __gcd(a,b)
  18. //todo اى ويل بريبير ماى بيبرز تو بى ذا بيست ان زيس وورلد
  19. vector<pair<int,int>>v;
  20. int n,k;
  21. int dp[103][103][103];
  22. int solve(int i,int t,int c)
  23. {
  24. if(i==n)
  25. return (t==k*c?t:0);
  26. int& ret= dp[i][t][c];
  27. if(ret!=-1) return ret;
  28. int take= solve(i+1,t+v[i].first,c+v[i].second), leave=solve(i+1,t,c);
  29. return ret=max(take,leave);
  30. }
  31. void HereWeGoAgain()
  32. {
  33. cin>>n>>k;
  34. v.resize(n);
  35. for(int i=0;i<n;i++) cin>>v[i].first;
  36. for(int i=0;i<n;i++) cin>>v[i].second;
  37. dpp(dp,-1);
  38. if(!solve(0,0,0)) cout<<-1;
  39. else cout<<solve(0,0,0);
  40. }
  41. int32_t main()
  42. {
  43. Arwa
  44. int t=1;
  45. //cin>>t;
  46. for(int i=1;i<=t;i++)
  47. {
  48. HereWeGoAgain();
  49. }
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0.01s 12000KB
stdin
Standard input is empty
stdout
-1