#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S divup_L( S a, T b) {
return ( a+ b- 1 ) / b;
}
template < class S, class T> inline S chmax( S & a, T b) {
if ( a< b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int minKnightMoves( int x, int y) {
int res = 0 ;
x = abs ( x) ;
y = abs ( y) ;
if ( x+ y== 1 ) {
return 3 ;
}
if ( x== y && y== 2 ) {
return 4 ;
}
chmax( res,divup_L( x,2 ) ) ;
chmax( res,divup_L( y,2 ) ) ;
chmax( res,divup_L( ( x+ y) ,3 ) ) ;
if ( res % 2 ! = ( x+ y) % 2 ) {
res++ ;
}
return res;
}
}
;
// cLay varsion 20190921-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int minKnightMoves(int x, int y) {
// int res = 0;
// x = abs(x);
// y = abs(y);
// if(x+y==1) return 3;
// if(x==y==2) return 4;
// res >?= x /+ 2;
// res >?= y /+ 2;
// res >?= (x+y) /+ 3;
// if(res % 2 != (x+y) % 2) res++;
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGRpdnVwX0woUyBhLCBUIGIpewogIHJldHVybiAoYStiLTEpL2I7Cn0KdGVtcGxhdGU8Y2xhc3MgUywgY2xhc3MgVD4gaW5saW5lIFMgY2htYXgoUyAmYSwgVCBiKXsKICBpZihhPGIpewogICAgYT1iOwogIH0KICByZXR1cm4gYTsKfQojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBpbnQgbWluS25pZ2h0TW92ZXMoaW50IHgsIGludCB5KXsKICAgIGludCByZXMgPSAwOwogICAgeCA9IGFicyh4KTsKICAgIHkgPSBhYnMoeSk7CiAgICBpZih4K3k9PTEpewogICAgICByZXR1cm4gMzsKICAgIH0KICAgIGlmKHg9PXkgJiYgeT09Mil7CiAgICAgIHJldHVybiA0OwogICAgfQogICAgY2htYXgocmVzLGRpdnVwX0woeCwyKSk7CiAgICBjaG1heChyZXMsZGl2dXBfTCh5LDIpKTsKICAgIGNobWF4KHJlcyxkaXZ1cF9MKCh4K3kpLDMpKTsKICAgIGlmKHJlcyAlIDIgIT0gKHgreSkgJSAyKXsKICAgICAgcmVzKys7CiAgICB9CiAgICByZXR1cm4gcmVzOwogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDE5MDkyMS0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGludCBtaW5LbmlnaHRNb3ZlcyhpbnQgeCwgaW50IHkpIHsKLy8gICAgIGludCByZXMgPSAwOwovLyAgICAgeCA9IGFicyh4KTsKLy8gICAgIHkgPSBhYnMoeSk7Ci8vICAgICBpZih4K3k9PTEpIHJldHVybiAzOwovLyAgICAgaWYoeD09eT09MikgcmV0dXJuIDQ7Ci8vICAgICByZXMgPj89IHggLysgMjsKLy8gICAgIHJlcyA+Pz0geSAvKyAyOwovLyAgICAgcmVzID4/PSAoeCt5KSAvKyAzOwovLyAgICAgaWYocmVzICUgMiAhPSAoeCt5KSAlIDIpIHJlcysrOwovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==