SRM456 Div1 Easy(250) SilverDistance
スタートとゴールがチェス盤でいう違う色のマスならば少なくとも1手前に進む必要がある。同じ色のマス間の移動ならば、前に動く必要は無い(斜めのみの移動でも同じ手数)。
#include <algorithm> using namespace std; class SilverDistance { public: int minSteps( int sx, int sy, int gx, int gy ); }; int SilverDistance::minSteps( int sx, int sy, int gx, int gy ) { int r = 0; // スタートとゴールが違う色なら1マス前へ if ( abs(sx+sy)%2 != abs(gx+gy)%2 ) sy++, r++; r += max( abs(sx-gx), abs(sy-gy) ); return r; }