SRM456 Div1 Easy(250) SilverDistance

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;
}