fork download
  1. #include <algorithm>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. using line_t = pair<int, int>;
  8.  
  9. vector<line_t> lines;
  10. vector<line_t> solution;
  11.  
  12. void print( size_t i )
  13. {
  14. solution.push_back( lines[i] );
  15.  
  16. for( size_t j = i + 1; j < lines.size(); ++j ) {
  17. if( lines[j].first >= lines[i].second ) {
  18. print( j );
  19. }
  20. }
  21.  
  22. for( auto& p : solution ) {
  23. cout << "[" << p.first << "-" << p.second << "] ";
  24. }
  25. cout << endl;
  26.  
  27. solution.pop_back();
  28. }
  29.  
  30. int main() {
  31. size_t n;
  32. cin >> n;
  33.  
  34. lines.resize( n );
  35. for( auto& p : lines ) {
  36. cin >> p.first >> p.second;
  37. }
  38. sort( lines.begin(), lines.end() );
  39.  
  40. for( size_t i = 0; i < n; ++i ) {
  41. print( i );
  42. }
  43. }
Success #stdin #stdout 0s 4328KB
stdin
6
0 3
0 8
4 8
4 11
9 11
12 16
stdout
[0-3] [4-8] [9-11] [12-16] 
[0-3] [4-8] [9-11] 
[0-3] [4-8] [12-16] 
[0-3] [4-8] 
[0-3] [4-11] [12-16] 
[0-3] [4-11] 
[0-3] [9-11] [12-16] 
[0-3] [9-11] 
[0-3] [12-16] 
[0-3] 
[0-8] [9-11] [12-16] 
[0-8] [9-11] 
[0-8] [12-16] 
[0-8] 
[4-8] [9-11] [12-16] 
[4-8] [9-11] 
[4-8] [12-16] 
[4-8] 
[4-11] [12-16] 
[4-11] 
[9-11] [12-16] 
[9-11] 
[12-16]