ABC 130 C - Rectangle Cutting

備忘録

問題

atcoder.jp

回答

import sys
import os


def main():
    if os.getenv("LOCAL"):
        sys.stdin = open("input.txt", "r")

    W, H, x, y = list(map(int, sys.stdin.buffer.readline().split()))
    ret = (W * H) / 2
    p = x == W / 2 and y == H / 2
    print(ret, 1 if p else 0)


if __name__ == '__main__':
    main()

考え方

考える点は2つ

  • 面積
  • 分割方法が複数パターン存在するか

面積は、どのような位置に点(x, y)を与えられた場合でも、
長方形を常に2つに等分することができるため、
回答は常に(W * H) / 2

分割方法は、点(x, y)から長方形の中心に存在する場合、
分割する線は、鏡映して2つ存在するため、
x == W / 2 and y == H / 2で判定することができる。