Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. vector< vector<int> > res;
  6. int n,k;
  7. vector<int> a;
  8.  
  9. void subprocess(string s){
  10.     int tmp = 0;
  11.     bool flag = false;
  12.     for(int i=0;i<s.length();i++){
  13.         if (s[i] == '1') tmp += a[i];
  14.     }
  15.     vector<int> ans;
  16.     if (tmp == k){
  17.         for(int i=0;i<s.length();i++){
  18.             if (s[i] == '1') ans.push_back(a[i]);
  19.         }  
  20.     }
  21.     if (ans.size()) res.push_back(ans);
  22. }
  23.  
  24. void Try(string s , int n){     // sinh nhhi phân
  25.     if (s.length() == n){       // tìm ra cấu hình thì xét tổng có thỏa mãn bằng  K không.
  26.         subprocess(s);          
  27.     }
  28.     else{
  29.         Try(s + "0", n);
  30.         Try(s + "1", n);
  31.     }
  32. }
  33.  
  34. void process(){
  35.     a.clear();
  36.     res.clear();
  37.     cin >> n >> k;
  38.     a.resize(n);
  39.     for(int i=0;i<n;i++) cin >> a[i];
  40.     sort(a.begin(), a.end());
  41.     Try("", n);
  42.     sort(res.begin(),res.end());
  43.  
  44.     if (res.size()){    // in kết quả
  45.         for(int i=0;i<res.size();i++){
  46.             cout << "[";
  47.             for(int j=0;j<res[i].size();j++){
  48.                 cout << res[i][j];
  49.                 if (j != res[i].size()-1) cout << " ";
  50.                 else cout << "]";
  51.             }
  52.             cout << " ";
  53.         }
  54.     }
  55.     else{
  56.         cout << -1;
  57.     }
  58.     cout << endl;
  59.  
  60. }
  61.  
  62. int main(){
  63.  
  64.     int T;
  65.     cin >> T;
  66.     while(T--) process();
  67.  
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement