Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <stdio.h>
- #include <algorithm>
- #include <set>
- #include <map>
- #include <math.h>
- #include <cmath>
- #include <queue>
- #include <iomanip>
- #include <bitset>
- #include <memory.h>
- using namespace std;
- const int INF = 1e+9;
- int main(){
- ios_base::sync_with_stdio(false);
- int n, s;
- cin >> n;
- vector <int> v(n);
- for (int i=0; i<n; ++i)
- cin >> v[i];
- cin >> s;
- vector <int> d(s+1);
- d[0] = 0;
- for (int m=1; m<=s; ++m){
- d[m] = INF;
- for (int i=0; i<n; ++i){
- if (m >= v[i] && d[m - v[i]] + 1 < d[m]){
- d[m] = d[m - v[i]] + 1;
- }
- }
- }
- if (d[s] == INF)
- cout << "No solution";
- else{
- vector <int> ans;
- while (s > 0)
- for (int i=0; i<n; ++i){
- if (s - v[i] >= 0 && d[s - v[i]] == d[s]-1){
- ans.push_back(v[i]);
- s -= v[i];
- break;
- }
- }
- reverse(ans.begin(), ans.end());
- for (int i=0; i<ans.size(); ++i)
- cout << ans[i] << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement