Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int INF = 1e9;
- ll n, x;
- ll coin[105];
- ll dp[1000005];
- set<ll> s;
- ll solve(int i, ll sum)
- {
- if (sum == x)
- return 0;
- if (i == n)
- return INF;
- if (sum>x)
- return INF;
- if (dp[sum] != -1)
- return dp[sum];
- ll r1, r2;
- r1 = solve(i, sum + coin[i]) + 1;
- r2 = solve(i + 1, sum);
- return dp[sum] = min(r1, r2);
- }
- int main()
- {
- //freopen("input.txt","r",stdin);
- //freopen("output.txt","w",stdout);*/
- cin >> n >> x;
- for (int i = 0; i < n; i++)
- {
- ll val; cin >> val;
- s.insert(val);
- }
- n = s.size();
- int i = 0;
- for (auto it = s.begin(); it != s.end(); ++it, ++i) {
- coin[i] = *it;
- }
- memset(dp, -1, sizeof(dp));
- ll ans = solve(0, 0);
- if (ans == INF)
- cout << "-1" << endl;
- else
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement