#include <stdio.h>
#define REORDER3(b1, b2, b3, a1, a2, a3 ) \
{ \
typeof(a1) _tmp[] = {a1, a2, a3}; \
b1 = _tmp[0]; b2 = _tmp[1]; b3 = _tmp[2]; \
} while ( 0 )
void uintprint3(unsigned *a)
{
printf("%u %u %u\n", a
[0], a
[1], a
[2]); }
void sort3( unsigned int a[3] )
{
if (a[0] > a[1])
{
if (a[1] > a[2])
{
REORDER3 (
a[0], a[1], a[2],
a[2], a[1], a[0]);
return;
}
else
{
if (a[0] > a[2])
{
REORDER3 (
a[0], a[1], a[2],
a[1], a[2], a[0]);
return;
}
else
{
REORDER3 (
a[0], a[1], a[2],
a[1], a[0], a[2]);
return;
}
}
}
else
{
if (a[1] <= a[2])
{
return; //NO REORDER
}
else
{
if (a[0] <= a[2])
{
REORDER3 (
a[0], a[1], a[2],
a[0], a[2], a[1] );
return;
}
else
{
REORDER3 (
a[0], a[1], a[2],
a[2], a[0], a[1] );
return;
}
}
}
}
int main(void)
{
unsigned int a[] = {0, 1, 2};
unsigned int b[] = {0, 2, 1};
unsigned int c[] = {1, 2, 0};
unsigned int d[] = {1, 0, 2};
unsigned int e[] = {2, 0, 1};
unsigned int f[] = {2, 1, 0};
sort3(a); sort3(b); sort3(c); sort3(d); sort3(e); sort3(f);
uintprint3(a);
uintprint3(b);
uintprint3(c);
uintprint3(d);
uintprint3(e);
uintprint3(f);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFJFT1JERVIzKGIxLCBiMiwgYjMsIGExLCBhMiwgYTMgKSAgIFwKeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdHlwZW9mKGExKSBfdG1wW10gPSB7YTEsIGEyLCBhM307ICAgICAgICAgXAogIGIxID0gX3RtcFswXTsgYjIgPSBfdG1wWzFdOyBiMyA9IF90bXBbMl07IFwKfSB3aGlsZSAoIDAgKQoKdm9pZCB1aW50cHJpbnQzKHVuc2lnbmVkICphKQp7CiAgICBwcmludGYoIiV1ICV1ICV1XG4iLCBhWzBdLCBhWzFdLCBhWzJdKTsKfQoKCnZvaWQgc29ydDMoIHVuc2lnbmVkIGludCBhWzNdICkKewogICAgaWYgKGFbMF0gPiBhWzFdKQogICAgewogICAgICAgIGlmIChhWzFdID4gYVsyXSkKICAgICAgICB7CiAgICAgICAgICAgIFJFT1JERVIzICgKICAgICAgICAgICAgICAgIGFbMF0sIGFbMV0sIGFbMl0sCiAgICAgICAgICAgICAgICBhWzJdLCBhWzFdLCBhWzBdKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpZiAoYVswXSA+IGFbMl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFJFT1JERVIzICgKICAgICAgICAgICAgICAgICAgICBhWzBdLCBhWzFdLCBhWzJdLAogICAgICAgICAgICAgICAgICAgIGFbMV0sIGFbMl0sIGFbMF0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUkVPUkRFUjMgKAogICAgICAgICAgICAgICAgICAgIGFbMF0sIGFbMV0sIGFbMl0sCiAgICAgICAgICAgICAgICAgICAgYVsxXSwgYVswXSwgYVsyXSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgaWYgKGFbMV0gPD0gYVsyXSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybjsgLy9OTyBSRU9SREVSCiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmIChhWzBdIDw9IGFbMl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFJFT1JERVIzICgKICAgICAgICAgICAgICAgICAgICBhWzBdLCBhWzFdLCBhWzJdLAogICAgICAgICAgICAgICAgICAgIGFbMF0sIGFbMl0sIGFbMV0gKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFJFT1JERVIzICgKICAgICAgICAgICAgICAgICAgICBhWzBdLCBhWzFdLCBhWzJdLAogICAgICAgICAgICAgICAgICAgIGFbMl0sIGFbMF0sIGFbMV0gKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4odm9pZCkKewogICAgdW5zaWduZWQgaW50IGFbXSA9IHswLCAxLCAyfTsKICAgIHVuc2lnbmVkIGludCBiW10gPSB7MCwgMiwgMX07CiAgICB1bnNpZ25lZCBpbnQgY1tdID0gezEsIDIsIDB9OwogICAgdW5zaWduZWQgaW50IGRbXSA9IHsxLCAwLCAyfTsKICAgIHVuc2lnbmVkIGludCBlW10gPSB7MiwgMCwgMX07CiAgICB1bnNpZ25lZCBpbnQgZltdID0gezIsIDEsIDB9OwogICAgc29ydDMoYSk7IHNvcnQzKGIpOyBzb3J0MyhjKTsgc29ydDMoZCk7IHNvcnQzKGUpOyBzb3J0MyhmKTsKICAgIAogICAgdWludHByaW50MyhhKTsKICAgIHVpbnRwcmludDMoYik7CiAgICB1aW50cHJpbnQzKGMpOwogICAgdWludHByaW50MyhkKTsKICAgIHVpbnRwcmludDMoZSk7CiAgICB1aW50cHJpbnQzKGYpOwogICAgcmV0dXJuIDA7Cn0=