#include <stdio.h>
#include <stdlib.h>
int compare_ints(const void* a, const void* b)
{
int arg1 = *(const int*)a;
int arg2 = *(const int*)b;
if (arg1 < arg2) return -1;
if (arg1 > arg2) return 1;
return 0;
// return (arg1 > arg2) - (arg1 < arg2); // possible shortcut
// return arg1 - arg2; // erroneous shortcut (fails if INT_MIN is present)
}
int main(void) {
enum {N = 3, M = 3};
int arr[N][M] = {{1, 6, 7}, {3, 8, 4}, {5, 2, 1}};
qsort(arr
, N
* M
, sizeof(int), compare_ints
); for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCgppbnQgY29tcGFyZV9pbnRzKGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCnsKICAgIGludCBhcmcxID0gKihjb25zdCBpbnQqKWE7CiAgICBpbnQgYXJnMiA9ICooY29uc3QgaW50KiliOwogCiAgICBpZiAoYXJnMSA8IGFyZzIpIHJldHVybiAtMTsKICAgIGlmIChhcmcxID4gYXJnMikgcmV0dXJuIDE7CiAgICByZXR1cm4gMDsKIAogICAgLy8gcmV0dXJuIChhcmcxID4gYXJnMikgLSAoYXJnMSA8IGFyZzIpOyAvLyBwb3NzaWJsZSBzaG9ydGN1dAogICAgLy8gcmV0dXJuIGFyZzEgLSBhcmcyOyAvLyBlcnJvbmVvdXMgc2hvcnRjdXQgKGZhaWxzIGlmIElOVF9NSU4gaXMgcHJlc2VudCkKfQoKCmludCBtYWluKHZvaWQpIHsKCWVudW0ge04gPSAzLCBNID0gM307CglpbnQgYXJyW05dW01dID0ge3sxLCA2LCA3fSwgezMsIDgsIDR9LCB7NSwgMiwgMX19OwoJcXNvcnQoYXJyLCBOICogTSwgc2l6ZW9mKGludCksIGNvbXBhcmVfaW50cyk7Cglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewoJCWZvciAoaW50IGogPSAwOyBqIDwgTTsgaisrKSB7CgkgICAgICAgIHByaW50ZigiJWQgIiwgYXJyW2ldW2pdKTsKCQl9CgkJcHJpbnRmKCJcbiIpOwogICAgfQoJcmV0dXJuIDA7Cn0K