/*This peace of code is written by aLimec for competing in Sisoog's challenge.
*/
#include <stdio.h>
#include <stdint.h>
#define _Ca(Ca,Cb,a,b) (( ((Ca ^ Cb) | (a | (~(a^b))) ) & Ca) >>1)
#define _Cb(Ca,Cb,a,b) (( ((Ca ^ Cb) | (b | (~(a^b))) ) & Cb) >>1)
#define bit(n) (((a & ca[n]) | (b & cb[n])) & (1<<(15-n)) )
int main()
{
uint16_t a,b,c;
printf("Please enter first integer number ( < 65535) : ");
scanf("%u",&a);
printf("Please enter second integer number ( < 65535) : ");
scanf("%u",&b);
uint16_t ca[16];
uint16_t cb[16];
ca[0] = 1<<15;
cb[0] = 1<<15;
ca[1] = _Ca(ca[0],cb[0],a,b);
cb[1] = _Cb(ca[0],cb[0],a,b);
ca[2] = _Ca(ca[1],cb[1],a,b);
cb[2] = _Cb(ca[1],cb[1],a,b);
ca[3] = _Ca(ca[2],cb[2],a,b);
cb[3] = _Cb(ca[2],cb[2],a,b);
ca[4] = _Ca(ca[3],cb[3],a,b);
cb[4] = _Cb(ca[3],cb[3],a,b);
ca[5] = _Ca(ca[4],cb[4],a,b);
cb[5] = _Cb(ca[4],cb[4],a,b);
ca[6] = _Ca(ca[5],cb[5],a,b);
cb[6] = _Cb(ca[5],cb[5],a,b);
ca[7] = _Ca(ca[6],cb[6],a,b);
cb[7] = _Cb(ca[6],cb[6],a,b);
ca[8] = _Ca(ca[7],cb[7],a,b);
cb[8] = _Cb(ca[7],cb[7],a,b);
ca[9] = _Ca(ca[8],cb[8],a,b);
cb[9] = _Cb(ca[8],cb[8],a,b);
ca[10] = _Ca(ca[9],cb[9],a,b);
cb[10] = _Cb(ca[9],cb[9],a,b);
ca[11] = _Ca(ca[10],cb[10],a,b);
cb[11] = _Cb(ca[10],cb[10],a,b);
ca[12] = _Ca(ca[11],cb[11],a,b);
cb[12] = _Cb(ca[11],cb[11],a,b);
ca[13] = _Ca(ca[12],cb[12],a,b);
cb[13] = _Cb(ca[12],cb[12],a,b);
ca[14] = _Ca(ca[13],cb[13],a,b);
cb[14] = _Cb(ca[13],cb[13],a,b);
ca[15] = _Ca(ca[14],cb[14],a,b);
cb[15] = _Cb(ca[14],cb[14],a,b);
c = bit(0) | bit(1) | bit(2) | bit(3) | bit(4) | bit(5) | bit(6) | bit(7) | bit(8) | bit(9) | bit(10) | bit(11) | bit(12) | bit(13) | bit(14) | bit(15) ;
printf("Between these two input numbers, %d and %d the bigger one is: \n >>>>>>>> %d <<<<<<<<", a, b , c);
return 0;
}