Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define ll long long
- #define pb push_back
- using namespace std;
- ll ar[30];
- ll arr[30];
- vector <ll> answer;
- bool q = false;
- ll n, m;
- bool check(){
- ll sum = 0;
- for (ll i = 0; i < m; ++i){
- sum += ar[i] * arr[i];
- }
- return sum == n;
- }
- void rek(ll a){
- if (a >= m){
- if (check()) {
- ll ans = 0;
- for (ll i = 0; i < m; ++i){
- ans += ar[i];
- }
- if ((!q) || (ans < answer.size())){
- q = true;
- answer.clear();
- for (ll i = 0; i < m; ++i){
- if (ar[i] == 1) answer.pb(arr[i]);
- else if (ar[i] == 2) {
- answer.pb(arr[i]);
- answer.pb(arr[i]);
- }
- }
- }
- }
- return;
- }
- for (ll i = 0; i < 3; ++i){
- ar[a] = i;
- rek(a + 1);
- }
- }
- int main(){
- cin>>n>>m;
- ll sum = 0;
- for (ll i = 0; i < m; ++i){
- cin>>arr[i];
- sum += arr[i] * 2;
- }
- if (sum < n){
- cout<<-1;
- exit(0);
- }
- rek(0);
- if (q){
- cout<<answer.size()<<endl;
- for (ll i = 0; i < answer.size(); ++i){
- cout<<answer[i]<<" ";
- }
- exit(0);
- }
- cout<<0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement