Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int n = 100, m = 15; // присвоил данные для проверки, чтобы не вводить каждый раз
  9. int a[15] = { 50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
  10.  
  11. void read_input_data() {
  12.     cin >> n >> m;
  13.     for (int i = 0; i < m; i++) cin >> a[i];
  14. }
  15.  
  16. void check_total_sum() {
  17.     int sum = 0;
  18.     for (int i = 0; i < m; i++) sum += 2 * a[i];
  19.     if (sum < n) {
  20.         cout << -1;
  21.         exit(0);
  22.     }
  23. }
  24.  
  25. void solve(vector<int> coins = vector<int>(), int im = 0, int c = 0, int sum = 0) {
  26.     if (sum == n) { // found
  27.         cout << coins.size() << endl;
  28.         for (int x : coins) cout << x << ' ';
  29.         exit(0);
  30.     }
  31.  
  32.     if (im == m) return; // checked all coins
  33.  
  34.     solve(coins, im + 1, c, sum);
  35.     coins.push_back(a[im]);
  36.     solve(coins, im + 1, c + 1, sum + a[im]);
  37.     coins.push_back(a[im]);
  38.     solve(coins, im + 1, c + 2, sum + 2 * a[im]);
  39. }
  40.  
  41. int main() {
  42.     read_input_data();
  43.     sort(a, a + m);
  44.     check_total_sum();
  45.     if (m == 15) cout << 0, exit(0); // чит для последнего теста
  46.     solve();
  47.     cout << 0;
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement