#include <algorithm>
#include <iostream>
#include <queue>
using namespace std;
static const int N = 4;
class Comparator {
public:
bool operator()(int lhs, int rhs) {
return lhs > rhs;
}
};
typedef priority_queue<int, vector<int>, greater<int>> MinHeap;
void PrintSortedMatrix(const int m[][N], size_t n) {
if (n == 0)
return;
MinHeap minHeap;
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++) {
minHeap.push(m[i][j]);
}
}
// print it
cout << "Print matrix in sorted order: " << endl;
while(!minHeap.empty()) {
cout << minHeap.top() << ", ";
minHeap.pop();
}
cout << endl;
}
int main() {
// your code goes here
int m[][N] {{0,1,2,3},
{1,2,3,4},
{2,3,4,5},
{3,4,5,6}};
PrintSortedMatrix(m, N);
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RhdGljIGNvbnN0IGludCBOID0gNDsKCmNsYXNzIENvbXBhcmF0b3IgewpwdWJsaWM6Cglib29sIG9wZXJhdG9yKCkoaW50IGxocywgaW50IHJocykgewoJCXJldHVybiBsaHMgPiByaHM7Cgl9CQp9OwoKdHlwZWRlZiBwcmlvcml0eV9xdWV1ZTxpbnQsIHZlY3RvcjxpbnQ+LCBncmVhdGVyPGludD4+IE1pbkhlYXA7Cgp2b2lkIFByaW50U29ydGVkTWF0cml4KGNvbnN0IGludCBtW11bTl0sIHNpemVfdCBuKSB7CglpZiAobiA9PSAwKQoJCXJldHVybjsKCQkKCU1pbkhlYXAgbWluSGVhcDsKCQoJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlmb3IgKHNpemVfdCBqID0gMDsgaiA8IG47IGorKykgewoJCQltaW5IZWFwLnB1c2gobVtpXVtqXSk7CgkJfQoJfQoJCgkvLyBwcmludCBpdAoJY291dCA8PCAiUHJpbnQgbWF0cml4IGluIHNvcnRlZCBvcmRlcjogIiA8PCBlbmRsOwoJd2hpbGUoIW1pbkhlYXAuZW1wdHkoKSkgewoJCWNvdXQgPDwgbWluSGVhcC50b3AoKSA8PCAiLCAiOwoJCW1pbkhlYXAucG9wKCk7Cgl9CgkKCWNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQgbVtdW05dIHt7MCwxLDIsM30sCgkJCQl7MSwyLDMsNH0sCgkJCQl7MiwzLDQsNX0sCgkJCQl7Myw0LDUsNn19OwoJCQkJCglQcmludFNvcnRlZE1hdHJpeChtLCBOKTsKCQoJcmV0dXJuIDA7Cn0=
Print matrix in sorted order:
0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6,