#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 )
#define uintprint3(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[0] > a[1]
a[0], a[1], a[2], // a[1] > a[2] //
a[2], a[1], a[0] // //
); return; }// //
//------------------------------// //
//
else if (a[0] > a[2]) //--------// //
{ REORDER3 ( // a[0] > a[1] //
// a[1] <= a[2] //
a[0], a[1], a[2], // a[0] > a[2] //
a[1], a[2], a[0] // //
); return; }// //
//------------------------------// //
//
else //-------------------------// //
{ REORDER3 ( // a[0] > a[1] //
// a[1] <= a[2] //
a[0], a[1], a[2], // a[0] <= a[2] //
a[1], a[0], a[2] // //
); return; }// //
//------------------------------// //
//
//----------------------------------------------//
else //-----------------------------------------//
//
if (a[1] <= a[2]) //------------// //
/*REORDER3 ( // //
// a[0] <= a[1] // a[0] <= a[1]
a[0], a[1], a[2], // a[1] <= a[2] //
a[0], a[1], a[2], // //
);*/ return; // //
//------------------------------// //
//
else if (a[0] <= a[2]) //-------// //
{ REORDER3 ( // a[0] <= a[1] //
// a[1] > a[2] //
a[0], a[1], a[2], // a[0] <= a[2] //
a[0], a[2], a[1] // //
); return; }// //
//------------------------------// //
//
else //-------------------------// //
{ REORDER3 ( // a[0] <= a[1] //
// a[1] > a[2] //
a[0], a[1], a[2], // a[0] > 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+CgojZGVmaW5lIFJFT1JERVIzKGIxLCBiMiwgYjMsIGExLCBhMiwgYTMgKSBcCnsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdHlwZW9mKGExKSBfdG1wW10gPSB7YTEsIGEyLCBhM307ICAgICAgICBcCiAgYjEgPSBfdG1wWzBdOyBiMiA9IF90bXBbMV07IGIzID0gX3RtcFsyXTsgICBcCn0gd2hpbGUgKCAwICkKCiNkZWZpbmUgdWludHByaW50MyhhKSBwcmludGYoIiV1ICV1ICV1XG4iLCBhWzBdLCBhWzFdLCBhWzJdKQoKCnZvaWQgc29ydDMoIHVuc2lnbmVkIGludCBhWzNdICkKewoKaWYgKGFbMF0gPiBhWzFdKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KaWYgKGFbMV0gPiBhWzJdKSAvLy0tLS0tLS0tLS0tLS0vLyAgICAgICAgICAgICAgLy8KeyAgIAogIFJFT1JERVIzICggICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFbMF0gPiAgYVsxXSAvLyBhWzBdID4gIGFbMV0KICAgICAgICAgICAgIGFbMF0sIGFbMV0sIGFbMl0sICAvLyBhWzFdID4gIGFbMl0gLy8KICAgICAgICAgICAgIGFbMl0sIGFbMV0sIGFbMF0gICAvLyAgICAgICAgICAgICAgLy8KICAgICAgICAgICApOyAgcmV0dXJuOyAgICAgICAgIH0vLyAgICAgICAgICAgICAgLy8KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KZWxzZSBpZiAoYVswXSA+IGFbMl0pIC8vLS0tLS0tLS0vLyAgICAgICAgICAgICAgLy8KeyBSRU9SREVSMyAoICAgICAgICAgICAgICAgICAgICAvLyBhWzBdID4gIGFbMV0gLy8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhWzFdIDw9IGFbMl0gLy8KICAgICAgICAgICAgYVswXSwgYVsxXSwgYVsyXSwgICAvLyBhWzBdID4gIGFbMl0gLy8KICAgICAgICAgICAgYVsxXSwgYVsyXSwgYVswXSAgICAvLyAgICAgICAgICAgICAgLy8KICAgICAgICAgICApOyAgcmV0dXJuOyAgICAgICAgIH0vLyAgICAgICAgICAgICAgLy8KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KZWxzZSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAgICAgICAgICAgICAgLy8KeyBSRU9SREVSMyAoICAgICAgICAgICAgICAgICAgICAvLyBhWzBdID4gIGFbMV0gLy8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhWzFdIDw9IGFbMl0gLy8KICAgICAgICAgICAgIGFbMF0sIGFbMV0sIGFbMl0sICAvLyBhWzBdIDw9IGFbMl0gLy8KICAgICAgICAgICAgIGFbMV0sIGFbMF0sIGFbMl0gICAvLyAgICAgICAgICAgICAgLy8KICAgICAgICAgICApOyAgcmV0dXJuOyAgICAgICAgIH0vLyAgICAgICAgICAgICAgLy8KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KCmVsc2UgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCmlmIChhWzFdIDw9IGFbMl0pIC8vLS0tLS0tLS0tLS0tLy8gICAgICAgICAgICAgIC8vCi8qUkVPUkRFUjMgKCAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYVswXSA8PSBhWzFdIC8vIGFbMF0gPD0gYVsxXQogICAgICAgICAgICAgYVswXSwgYVsxXSwgYVsyXSwgIC8vIGFbMV0gPD0gYVsyXSAvLwogICAgICAgICAgICAgYVswXSwgYVsxXSwgYVsyXSwgIC8vICAgICAgICAgICAgICAvLwogICAgICAgICAgICk7Ki8gcmV0dXJuOyAgICAgICAgIC8vICAgICAgICAgICAgICAvLwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwplbHNlIGlmIChhWzBdIDw9IGFbMl0pIC8vLS0tLS0tLS8vICAgICAgICAgICAgICAvLwp7IFJFT1JERVIzICggICAgICAgICAgICAgICAgICAgIC8vIGFbMF0gPD0gYVsxXSAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFbMV0gPiAgYVsyXSAvLwogICAgICAgICAgICAgYVswXSwgYVsxXSwgYVsyXSwgIC8vIGFbMF0gPD0gYVsyXSAvLwogICAgICAgICAgICAgYVswXSwgYVsyXSwgYVsxXSAgIC8vICAgICAgICAgICAgICAvLwogICAgICAgICAgICk7ICByZXR1cm47ICAgICAgICAgfS8vICAgICAgICAgICAgICAvLwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwplbHNlIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vICAgICAgICAgICAgICAvLwp7IFJFT1JERVIzICggICAgICAgICAgICAgICAgICAgIC8vIGFbMF0gPD0gYVsxXSAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFbMV0gPiAgYVsyXSAvLwogICAgICAgICAgICAgYVswXSwgYVsxXSwgYVsyXSwgIC8vIGFbMF0gPiAgYVsyXSAvLwogICAgICAgICAgICAgYVsyXSwgYVswXSwgYVsxXSAgIC8vICAgICAgICAgICAgICAvLwogICAgICAgICAgICk7ICByZXR1cm47ICAgICAgICAgfS8vICAgICAgICAgICAgICAvLwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwp9CgppbnQgbWFpbih2b2lkKQp7CnVuc2lnbmVkIGludCBhW10gPSB7MCwgMSwgMn07CnVuc2lnbmVkIGludCBiW10gPSB7MCwgMiwgMX07CnVuc2lnbmVkIGludCBjW10gPSB7MSwgMiwgMH07CnVuc2lnbmVkIGludCBkW10gPSB7MSwgMCwgMn07CnVuc2lnbmVkIGludCBlW10gPSB7MiwgMCwgMX07CnVuc2lnbmVkIGludCBmW10gPSB7MiwgMSwgMH07CnNvcnQzKGEpOyBzb3J0MyhiKTsgc29ydDMoYyk7IHNvcnQzKGQpOyBzb3J0MyhlKTsgc29ydDMoZik7Cgp1aW50cHJpbnQzKGEpOwp1aW50cHJpbnQzKGIpOwp1aW50cHJpbnQzKGMpOwp1aW50cHJpbnQzKGQpOwp1aW50cHJpbnQzKGUpOwp1aW50cHJpbnQzKGYpOwoKcmV0dXJuIDA7Cn0K