#include <stdio.h>
#include <stdlib.h>
#define ROWS 5
#define COLUMNS 5
typedef char Row[COLUMNS];
int compareVertical(const void *a, const void *b)
{
return (*(Row *)a)[0] - (*(Row *)b)[0];
}
int compareHorizon(const void *a, const void *b)
{
return *(char *)a - *(char *)b;
}
int main()
{
char arr[ROWS][COLUMNS] = {
"ebacd",
"olmkn",
"fghij",
"xywuv",
"trpqs"};
qsort(arr
, ROWS
, sizeof(Row
), compareVertical
);
for (int row = 0; row < ROWS; ++row)
{
qsort(arr
[row
], COLUMNS
, sizeof(char), compareHorizon
); }
for (int row = 0; row < ROWS; ++row)
{
for (int column = 0; column < COLUMNS; ++column)
{
printf("%c", arr
[row
][column
]); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgUk9XUyA1CiNkZWZpbmUgQ09MVU1OUyA1Cgp0eXBlZGVmIGNoYXIgUm93W0NPTFVNTlNdOwoKaW50IGNvbXBhcmVWZXJ0aWNhbChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQp7CiAgICByZXR1cm4gKCooUm93ICopYSlbMF0gLSAoKihSb3cgKiliKVswXTsKfQoKaW50IGNvbXBhcmVIb3Jpem9uKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCnsKICAgIHJldHVybiAqKGNoYXIgKilhIC0gKihjaGFyICopYjsKfQoKaW50IG1haW4oKQp7CiAgICBjaGFyIGFycltST1dTXVtDT0xVTU5TXSA9IHsKICAgICAgICAiZWJhY2QiLAogICAgICAgICJvbG1rbiIsCiAgICAgICAgImZnaGlqIiwKICAgICAgICAieHl3dXYiLAogICAgICAgICJ0cnBxcyJ9OwoKICAgIHFzb3J0KGFyciwgUk9XUywgc2l6ZW9mKFJvdyksIGNvbXBhcmVWZXJ0aWNhbCk7CgogICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgUk9XUzsgKytyb3cpCiAgICB7CiAgICAgICAgcXNvcnQoYXJyW3Jvd10sIENPTFVNTlMsIHNpemVvZihjaGFyKSwgY29tcGFyZUhvcml6b24pOwogICAgfQoKICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IFJPV1M7ICsrcm93KQogICAgewogICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IENPTFVNTlM7ICsrY29sdW1uKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIlYyIsIGFycltyb3ddW2NvbHVtbl0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=