fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <list>
  5. #include <set>
  6. #include <iterator>
  7. using namespace std;
  8.  
  9. int main() {
  10. list<set<int>> lsi {{1, 2}, {3}, {4, 5}};
  11.  
  12. vector<list<set<int>>> answer;
  13. for (auto it_lsi = lsi.begin(); it_lsi != lsi.end(); ++it_lsi)
  14. {
  15. if (it_lsi->size() > 1)
  16. for (int i : *it_lsi)
  17. {
  18. list<set<int>> res {lsi.begin(), it_lsi};
  19. set<int> A = *it_lsi;
  20. A.erase(i);
  21. set<int> B {i};
  22. res.push_back(A);
  23. res.push_back(B);
  24. res.insert(res.end(), next(it_lsi), lsi.end());
  25. answer.push_back(res);
  26. }
  27.  
  28. }
  29.  
  30. for (auto l : answer) {
  31. cout << '{';
  32. for (auto s : l) {
  33. cout << '{';
  34. for (int i : s) {
  35. cout << i;
  36. }
  37. cout << '}';
  38. }
  39. cout << '}';
  40. }
  41. return 0;
  42. }
Success #stdin #stdout 0s 15248KB
stdin
Standard input is empty
stdout
{{2}{1}{3}{45}}{{1}{2}{3}{45}}{{12}{3}{5}{4}}{{12}{3}{4}{5}}