fork(7) download
  1. #include <iostream>
  2. #include <set>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. //set<multiset<int>>f(vector<int>a){set<multiset<int>>r;for(int q=2e3,s;--q;){multiset<int>c;s=0;for(auto&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} //174
  8. //using m=multiset<int>;set<m>f(vector<int>a){set<m>r;for(int q=2e3,s;--q;){m c;s=0;for(auto&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} //161
  9. //using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s;--q;){m c;s=0;for(auto&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} // 154
  10. //using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s;--q;){m c;s=0;for(int&x:a)if(q&1<<&x-&a[0])c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} // 153
  11. //using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s,i;--q;){m c;s=i=0;for(int&x:a)if(q&1<<i++)c.insert(x),s+=x;if(s==10)r.insert(c);}return r;} // 152
  12. //using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s,i;--q;){m c;s=10,i=0;for(int&x:a)if(q&1<<i++)c.insert(x),s-=x;if(!s)r.insert(c);}return r;} // 152
  13. using m=multiset<int>;set<m>f(auto a){set<m>r;for(int q=2e3,s;--q;){m c;s=10;for(int&x:a)if(q&1<<&x-&a[0])c.insert(x),s-=x;if(!s)r.insert(c);}return r;} // 151
  14. //using m=multiset<int>;set<m>f(auto a){set<m>r;m c;for(int q=2e3,s;--q;!s?r.insert(c),0:0){c.clear();s=10;for(int&x:a)if(q&1<<&x-&a[0])c.insert(x),s-=x;}return r;}
  15.  
  16. int main()
  17. {
  18. for (auto &r : f((vector<int>){5,5,2,3}))
  19. {
  20. for (auto &x : r)
  21. cout << x << ' ';
  22.  
  23. cout << '\n';
  24. }
  25.  
  26. return 0;
  27. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
2 3 5 
5 5