#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
void print(int **arr) {
int i;
for (i = 0; i < SIZE; ++i) {
}
}
int compare(const void *lhs, const void *rhs)
{
const int *l = *(const int**)lhs;
const int *r = *(const int**)rhs;
if (l[0] > r[0])
return 1;
else if (l[0] < r[0])
return -1;
else {
if (l[1] > r[1])
return 1;
else if (l[1] < r[1])
return -1;
else
return 0;
}
}
int main()
{
int **arr
= (int**)malloc(SIZE
*sizeof(int*)); int *tmp
= (int*)malloc(SIZE
*2*sizeof(int)); int i;
for (i = 0; i < SIZE; ++i) {
arr[i] = &tmp[i*2];
}
arr[0][0] = 2;
arr[0][1] = 2;
arr[1][0] = 2;
arr[1][1] = 1;
arr[2][0] = 1;
arr[2][1] = 1;
arr[3][0] = 1;
arr[3][1] = 0;
arr[4][0] = 0;
arr[4][1] = 0;
print(arr);
qsort(arr
, SIZE
, sizeof(int*), compare
); print(arr);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgU0laRSA1Cgp2b2lkIHByaW50KGludCAqKmFycikgewogICAgaW50IGk7CiAgICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKSB7CiAgICAgICAgcHJpbnRmKCIlZCAiLCBhcnJbaV1bMF0pOwogICAgICAgIHByaW50ZigiJWRcbiIsIGFycltpXVsxXSk7CiAgICB9Cn0KCmludCBjb21wYXJlKGNvbnN0IHZvaWQgKmxocywgY29uc3Qgdm9pZCAqcmhzKQp7CiAgICBjb25zdCBpbnQgKmwgPSAqKGNvbnN0IGludCoqKWxoczsKICAgIGNvbnN0IGludCAqciA9ICooY29uc3QgaW50KiopcmhzOwogICAgaWYgKGxbMF0gPiByWzBdKSAKICAgICAgICByZXR1cm4gMTsKICAgIGVsc2UgaWYgKGxbMF0gPCByWzBdKQogICAgICAgIHJldHVybiAtMTsKICAgIGVsc2UgewogICAgICAgIGlmIChsWzFdID4gclsxXSkKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgZWxzZSBpZiAobFsxXSA8IHJbMV0pCiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAwOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGludCAqKmFyciA9IChpbnQqKiltYWxsb2MoU0laRSpzaXplb2YoaW50KikpOwogICAgaW50ICp0bXAgPSAoaW50KiltYWxsb2MoU0laRSoyKnNpemVvZihpbnQpKTsKICAgIGludCBpOwoKICAgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpIHsKICAgICAgICBhcnJbaV0gPSAmdG1wW2kqMl07CiAgICB9CiAgICBhcnJbMF1bMF0gPSAyOwogICAgYXJyWzBdWzFdID0gMjsKCiAgICBhcnJbMV1bMF0gPSAyOwogICAgYXJyWzFdWzFdID0gMTsKCiAgICBhcnJbMl1bMF0gPSAxOwogICAgYXJyWzJdWzFdID0gMTsKCiAgICBhcnJbM11bMF0gPSAxOwogICAgYXJyWzNdWzFdID0gMDsKICAgIAogICAgYXJyWzRdWzBdID0gMDsKICAgIGFycls0XVsxXSA9IDA7CgogICAgcHJpbnQoYXJyKTsKICAgIHFzb3J0KGFyciwgU0laRSwgc2l6ZW9mKGludCopLCBjb21wYXJlKTsKICAgIHByaW50ZigiXG4iKTsKICAgIHByaW50KGFycik7CgogICAgZnJlZSh0bXApOwogICAgZnJlZShhcnIpOwogICAgCiAgICByZXR1cm4gMDsKCn0KCg==