josiftepe

Untitled

Nov 7th, 2020
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.77 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. const int maxn = 1e6 + 5;
  5. const int MOD = 1e9 + 7;
  6. const int INF = 2e9 + 10;
  7. int n, x;
  8. int a[maxn];
  9. int dp[maxn];
  10. int rec(int sum) {
  11.    
  12.     if(dp[sum] != -1) {
  13.         return dp[sum];
  14.     }
  15.     if(sum == 0) {
  16.         return 0;
  17.     }
  18.     int ret = INF;
  19.     for(int i = 0; i < n; ++i) {
  20.         if(sum - a[i] >= 0) {
  21.             ret = min(ret, rec(sum - a[i]) + 1);
  22.         }
  23.     }
  24.     return dp[sum] = ret;
  25. }
  26. int main()
  27. {
  28.     ios_base::sync_with_stdio(false);
  29.     cin >> n >> x;
  30.     for(int i = 0; i < n; ++i) {
  31.         cin >> a[i];
  32.     }
  33.     for(int i = 0; i < maxn; ++i) {
  34.         dp[i] = -1;
  35.     }
  36.     if(rec(x) >= INF) {
  37.         cout << -1 << endl;
  38.     }
  39.     else cout << rec(x) << endl;
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment