結果

問題 No.3108 Luke or Bishop
ユーザー ciffelia
提出日時 2025-04-18 21:47:42
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 29 ms / 2,000 ms
コード長 879 bytes
コンパイル時間 392 ms
コンパイル使用メモリ 11,776 KB
実行使用メモリ 10,240 KB
最終ジャッジ日時 2025-04-18 21:47:45
合計ジャッジ時間 1,954 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 26
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve(Gx, Gy):
    # ケース1: 原点と同じ場所(移動不要)
    if Gx == 0 and Gy == 0:
        return 0
    
    # ケース2: ルークの場合
    rook_moves = 2  # 基本的には横と縦の2手
    if Gx == 0 or Gy == 0:  # 横か縦の直線上にある場合は1手
        rook_moves = 1
    
    # ケース3: ビショップの場合
    bishop_moves = float('inf')  # 初期値を無限大に設定
    
    # x+y=k または x-y=k の直線上にあるかチェック
    if Gx + Gy == 0 or Gx - Gy == 0:
        bishop_moves = 1
    else:
        # パリティチェックは不要、どんな地点にも最大2手で到達可能
        bishop_moves = 2
    
    # 最小手数を返す
    return min(rook_moves, bishop_moves)

def main():
    Gx, Gy = map(int, input().split())
    print(solve(Gx, Gy))

if __name__ == "__main__":
    main()
0