Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- vector< vector<int> > res;
- int n,k;
- vector<int> a;
- void subprocess(string s){
- int tmp = 0;
- bool flag = false;
- for(int i=0;i<s.length();i++){
- if (s[i] == '1') tmp += a[i];
- }
- vector<int> ans;
- if (tmp == k){
- for(int i=0;i<s.length();i++){
- if (s[i] == '1') ans.push_back(a[i]);
- }
- }
- if (ans.size()) res.push_back(ans);
- }
- void Try(string s , int n){ // sinh nhhi phân
- 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.
- subprocess(s);
- }
- else{
- Try(s + "0", n);
- Try(s + "1", n);
- }
- }
- void process(){
- a.clear();
- res.clear();
- cin >> n >> k;
- a.resize(n);
- for(int i=0;i<n;i++) cin >> a[i];
- sort(a.begin(), a.end());
- Try("", n);
- sort(res.begin(),res.end());
- if (res.size()){ // in kết quả
- for(int i=0;i<res.size();i++){
- cout << "[";
- for(int j=0;j<res[i].size();j++){
- cout << res[i][j];
- if (j != res[i].size()-1) cout << " ";
- else cout << "]";
- }
- cout << " ";
- }
- }
- else{
- cout << -1;
- }
- cout << endl;
- }
- int main(){
- int T;
- cin >> T;
- while(T--) process();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement