Advertisement
ice_tea

Untitled

Oct 15th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define pb push_back
  4. using namespace std;
  5.  
  6. ll ar[30];
  7. ll arr[30];
  8. vector <ll> answer;
  9. bool q = false;
  10. ll n, m;
  11.  
  12. bool check(){
  13.     ll sum = 0;
  14.     for (ll i = 0; i < m; ++i){
  15.         sum += ar[i] * arr[i];
  16.     }
  17.     return sum == n;
  18. }
  19.  
  20. void rek(ll a){
  21.     if (a >= m){
  22.         if (check()) {
  23.             ll ans = 0;
  24.             for (ll i = 0; i < m; ++i){
  25.                 ans += ar[i];
  26.             }
  27.             if ((!q) || (ans < answer.size())){
  28.                 q = true;
  29.                 answer.clear();
  30.                 for (ll i = 0; i < m; ++i){
  31.                     if (ar[i] == 1) answer.pb(arr[i]);
  32.                     else if (ar[i] == 2) {
  33.                         answer.pb(arr[i]);
  34.                         answer.pb(arr[i]);
  35.                     }
  36.                 }
  37.             }
  38.         }
  39.         return;
  40.     }
  41.     for (ll i = 0; i < 3; ++i){
  42.         ar[a] = i;
  43.         rek(a + 1);
  44.     }
  45. }
  46.  
  47. int main(){
  48.     cin>>n>>m;
  49.     ll sum = 0;
  50.     for (ll i = 0; i < m; ++i){
  51.         cin>>arr[i];
  52.         sum += arr[i] * 2;
  53.     }
  54.     if (sum < n){
  55.         cout<<-1;
  56.         exit(0);
  57.     }
  58.     rek(0);
  59.     if (q){
  60.         cout<<answer.size()<<endl;
  61.         for (ll i = 0; i < answer.size(); ++i){
  62.             cout<<answer[i]<<" ";
  63.         }
  64.         exit(0);
  65.     }
  66.     cout<<0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement