#define a(x) (x>0?x:-(x))
#define f(x,y) y>a(x-.5)?x--:-y>a(x+.5)?x++:x>a(y+.5)?y++:x|y?y--:x;
#include <iostream>
void test( int x, int y, int rx, int ry) {
std:: cout << "(" << x << ", " << y << ")=>" ;
f( x,y) ;
std:: cout << "(" << x << ", " << y << ") - " << ( ( x== rx&& y== ry) ? "OK" : "FAILURE" ) << std:: endl ;
}
int main( ) {
test( 0 , 0 , 0 , 0 ) ;
test( 1 , 0 , 1 , 1 ) ;
test( 1 , 1 , 0 , 1 ) ;
test( 0 , 1 , - 1 , 1 ) ;
test( - 1 , 1 , - 1 , 0 ) ;
test( - 1 , 0 , - 1 , - 1 ) ;
test( - 1 , - 1 , 0 , - 1 ) ;
test( 0 , - 1 , 1 , - 1 ) ;
test( 1 , - 1 , 1 , 0 ) ;
test( 95 , - 12 , 95 , - 11 ) ;
test( 127 , 127 , 126 , 127 ) ;
test( - 2 , 101 , - 3 , 101 ) ;
test( - 65 , 65 , - 65 , 64 ) ;
test( - 127 , 42 , - 127 , 41 ) ;
test( - 9 , - 9 , - 8 , - 9 ) ;
test( 126 , - 127 , 127 , - 127 ) ;
test( 105 , - 105 , 105 , - 104 ) ;
return 0 ;
}
I2RlZmluZSBhKHgpICh4PjA/eDotKHgpKQojZGVmaW5lIGYoeCx5KSB5PmEoeC0uNSk/eC0tOi15PmEoeCsuNSk/eCsrOng+YSh5Ky41KT95Kys6eHx5P3ktLTp4OwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp2b2lkIHRlc3QoaW50IHgsIGludCB5LCBpbnQgcngsIGludCByeSl7CglzdGQ6OmNvdXQgPDwgIigiIDw8IHggPDwgIiwgIiA8PCB5IDw8ICIpPT4iOwoJZih4LHkpOwoJc3RkOjpjb3V0IDw8ICIoIiA8PCB4IDw8ICIsICIgPDwgeSA8PCAiKSAtICIgPDwgKCh4PT1yeCYmeT09cnkpPyJPSyI6IkZBSUxVUkUiKSA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkgewoJdGVzdCgwLCAwLCAwLCAwKTsKCXRlc3QoMSwgMCwgMSwgMSk7Cgl0ZXN0KDEsIDEsIDAsIDEpOwoJdGVzdCgwLCAxLCAtMSwgMSk7Cgl0ZXN0KC0xLCAxLCAtMSwgMCk7Cgl0ZXN0KC0xLCAwLCAtMSwgLTEpOwoJdGVzdCgtMSwgLTEsIDAsIC0xKTsKCXRlc3QoMCwgLTEsIDEsIC0xKTsKCXRlc3QoMSwgLTEsIDEsIDApOwoJdGVzdCg5NSwgLTEyLCA5NSwgLTExKTsKCXRlc3QoMTI3LCAxMjcsIDEyNiwgMTI3KTsKCXRlc3QoLTIsIDEwMSwgLTMsIDEwMSk7Cgl0ZXN0KC02NSwgNjUsIC02NSwgNjQpOwoJdGVzdCgtMTI3LCA0MiwgLTEyNywgNDEpOwoJdGVzdCgtOSwgLTksIC04LCAtOSk7Cgl0ZXN0KDEyNiwgLTEyNywgMTI3LCAtMTI3KTsKCXRlc3QoMTA1LCAtMTA1LCAxMDUsIC0xMDQpOwoJCglyZXR1cm4gMDsKfQ==
stdout
(0, 0)=>(0, 0) - OK
(1, 0)=>(1, 1) - OK
(1, 1)=>(0, 1) - OK
(0, 1)=>(-1, 1) - OK
(-1, 1)=>(-1, 0) - OK
(-1, 0)=>(-1, -1) - OK
(-1, -1)=>(0, -1) - OK
(0, -1)=>(1, -1) - OK
(1, -1)=>(1, 0) - OK
(95, -12)=>(95, -11) - OK
(127, 127)=>(126, 127) - OK
(-2, 101)=>(-3, 101) - OK
(-65, 65)=>(-65, 64) - OK
(-127, 42)=>(-127, 41) - OK
(-9, -9)=>(-8, -9) - OK
(126, -127)=>(127, -127) - OK
(105, -105)=>(105, -104) - OK