fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. vector<vector<int>> out;
  6. void f(int N,int L,const vector<int>&prefix){
  7. auto arr=prefix;
  8. for(auto i=arr.empty()?0:arr.back()+1;i<N;i++){
  9. arr.push_back(i);
  10. if(L==arr.size())out.push_back(arr);
  11. f(N,L,arr);
  12. arr.pop_back();
  13. }
  14. }
  15.  
  16. int sum(const vector<int>&arr,const vector<int>&ids){int v=0;for(size_t i=0;i<ids.size();i++)v+=arr[ids[i]];return v;}
  17.  
  18. bool check(const vector<int>&inp){
  19. vector<int> e;
  20. int n=inp.size();
  21. for(int i=0;i<n;i++)f(n,i+1,e);
  22. for(int i=0;i<out.size();i++){
  23. auto&arr=out[i];
  24. if(0==sum(inp,arr)){for(int i=0;i<arr.size();i++)cout<<inp[arr[i]]<<" ";cout<<endl;return true;}
  25. }
  26. return false;
  27. }
  28.  
  29. int main() {
  30. int inp_arr[]={2,-7,4,8,1}; int n=5;
  31. vector<int> inp(inp_arr,inp_arr+n);
  32. cout<<(check(inp)?"true":"false");
  33. return 0;
  34. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
2 -7 4 1 
true