#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <iterator>
using namespace std;
int main() {
int ar[5][2] = { {20, 11}, {10, 20}, {39, 14}, {29, 15}, {22, 23} };
const auto subArraySize = sizeof(*ar);
static const auto SIZE = subArraySize / sizeof(int);
qsort(ar, sizeof(ar) / subArraySize, subArraySize, [](const auto lhs, const auto rhs) {
const auto first = reinterpret_cast<const int*>(lhs);
const auto last = next(first, SIZE);
const auto its = mismatch(first, last, reinterpret_cast<const int*>(rhs));
if (its.first == last) {
return 0;
} else if (*its.first < *its.second) {
return -1;
} else {
return 1;
}});
for (const auto& i : ar) {
for (const auto& j : i) cout << j << '\t';
cout << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJaW50IGFyWzVdWzJdID0geyB7MjAsIDExfSwgezEwLCAyMH0sIHszOSwgMTR9LCB7MjksIDE1fSwgezIyLCAyM30gfTsKCWNvbnN0IGF1dG8gc3ViQXJyYXlTaXplID0gc2l6ZW9mKCphcik7CglzdGF0aWMgY29uc3QgYXV0byBTSVpFID0gc3ViQXJyYXlTaXplIC8gc2l6ZW9mKGludCk7CgoJcXNvcnQoYXIsIHNpemVvZihhcikgLyBzdWJBcnJheVNpemUsIHN1YkFycmF5U2l6ZSwgW10oY29uc3QgYXV0byBsaHMsIGNvbnN0IGF1dG8gcmhzKSB7CgkJY29uc3QgYXV0byBmaXJzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50Kj4obGhzKTsKCQljb25zdCBhdXRvIGxhc3QgPSBuZXh0KGZpcnN0LCBTSVpFKTsKCQljb25zdCBhdXRvIGl0cyA9IG1pc21hdGNoKGZpcnN0LCBsYXN0LCByZWludGVycHJldF9jYXN0PGNvbnN0IGludCo+KHJocykpOwoKCQlpZiAoaXRzLmZpcnN0ID09IGxhc3QpIHsKCQkJcmV0dXJuIDA7CgkJfSBlbHNlIGlmICgqaXRzLmZpcnN0IDwgKml0cy5zZWNvbmQpIHsKCQkJcmV0dXJuIC0xOwoJCX0gZWxzZSB7CgkJCXJldHVybiAxOwoJCX19KTsKCglmb3IgKGNvbnN0IGF1dG8mIGkgOiBhcikgewoJCWZvciAoY29uc3QgYXV0byYgaiA6IGkpIGNvdXQgPDwgaiA8PCAnXHQnOwoJCWNvdXQgPDwgZW5kbDsKCX0KfQ==