Advertisement
IISergeyII

Untitled

May 17th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <math.h>
  5. #include <vector>
  6. #include <fstream>
  7.  
  8. using namespace std;
  9.  
  10. int N, M;
  11.  
  12. vector<int> usedCoins;
  13. vector<int> coinsIn;
  14.  
  15. int minAmount = INT_MAX, currAmount = 0;
  16. long long Summ = 0;
  17.  
  18. void doSearch() {
  19.  
  20. }
  21.  
  22. void BackTracking(int nCoin) {
  23.     if (currAmount > M) return;
  24.     if (Summ > N) return;
  25.  
  26.     for (int i = 0; i < 3; i++) {
  27.         currAmount++;
  28.         Summ += i*coinsIn[nCoin];
  29.         usedCoins.push_back(nCoin);
  30.  
  31.         if (Summ == N) {
  32.             if (currAmount < minAmount) {
  33.                 currAmount = minAmount;
  34.             }
  35.         }
  36.         BackTracking(nCoin + 1);
  37.     }
  38. }
  39.  
  40. int main()
  41. {
  42.     long long sum;
  43.     cin >> N >> M;
  44.  
  45.  
  46.     for (int i = 0; i < M; ++i) {
  47.         int t;
  48.         cin >> t;
  49.         coinsIn.push_back(t);
  50.         sum += t*2;
  51.     }
  52.  
  53.     if (sum < N) {
  54.         cout << "-1";
  55.     } else if (sum == N) {
  56.         cout << coinsIn.size()*2 << endl;
  57.         for (int i = 0; i < coinsIn.size(); i++) {
  58.             cout << coinsIn[i] << " " << coinsIn[i] << " ";
  59.         }
  60.     } else {
  61.         doSearch();
  62.         cout << minAmount << endl;
  63.         for (int i = 0; i < minAmount; i++) {
  64.             cout << usedCoins[i] << " ";
  65.         }
  66.     }
  67.  
  68.  
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement