Untitled


SUBMITTED BY: antoineh1

DATE: May 14, 2016, 9:41 p.m.

FORMAT: Text only

SIZE: 588 Bytes

HITS: 4658

  1. std::list< int > heap_merge( std::vector< std::list< int > >& ls )
  2. {
  3. auto cmp = []( auto& x, auto& y )
  4. {
  5. if( y.empty() ) // x > []
  6. {
  7. return false;
  8. }
  9. if( x.empty() ) // [] > y
  10. {
  11. return true;
  12. }
  13. return x.front() > y.front();
  14. };
  15. make_heap( begin( ls ), end( ls ), cmp );
  16. std::list< int > hr;
  17. for( ;; )
  18. {
  19. pop_heap( begin( ls ), end( ls ), cmp );
  20. auto& m = ls.back();
  21. if( m.empty() )
  22. {
  23. break;
  24. }
  25. hr.push_back( m.front() );
  26. m.pop_front();
  27. push_heap( begin( ls ), end( ls ), cmp );
  28. }
  29. return hr;
  30. }

comments powered by Disqus