색 뒤집어 칠하기

시간 제한1초메모리 제한128 MB

요약
각 사각형을 일정한 비율 h:v로 나누고 오른쪽 위와 왼쪽 아래 부분의 색을 뒤집는 과정을 반복할 때, 주어진 점의 색을 판정한다.
난이도

보통10점 중 5점

유형
재귀, 분할 정복, 수학, 구현
정답자
아직 제출이 없습니다

문제

변이 xx축과 yy축에 평행하고 왼쪽 아래 꼭짓점이 (0,0)(0, 0)에 있는 직사각형을 색칠한다. 이 직사각형은 해상도가 거의 무한한 화면이라고 생각할 수 있으며, 처음에는 전체가 검은색이다. 두 실수 0<h<10 < h < 1과 0<v<10 < v < 1이 주어지면 다음 과정을 수행한다.

  • 직사각형의 가로 변을 왼쪽에서부터 h:1−hh : 1-h의 비율로 나누는 수직선을 긋는다.
  • 직사각형의 세로 변을 아래에서부터 v:1−vv : 1-v의 비율로 나누는 수평선을 긋는다.
  • 이 두 선은 직사각형을 네 개의 작은 직사각형으로 나눈다.
  • 왼쪽 위와 오른쪽 아래 직사각형은 색을 그대로 유지한다.
  • 나머지 두 직사각형(오른쪽 위와 왼쪽 아래)은 색을 반전시키고(검은색 ↔ 흰색), 각각에 대해 방금 큰 직사각형에 적용한 것과 똑같은 과정을 다시 적용한다.
  • 이 과정은 (원칙적으로) 영원히 반복된다.

색칠 과정에서 나타나는 어떤 직사각형의 경계에도 놓이지 않는 점 하나가 주어졌을 때, 그 점의 색을 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 케이스의 첫 줄에는 네 실수, 즉 직사각형의 가로 길이 HH, 세로 길이 VV, 그리고 비율 hh와 vv가 주어진다(0<h,v<10 < h, v < 1). 따라서 직사각형은 [0,H]×[0,V][0, H] \times [0, V] 영역을 차지한다. 다음 줄에는 살펴볼 점의 개수인 정수 nn이 주어진다. 이어지는 nn개의 줄에는 각각 한 점의 xx좌표와 yy좌표가 주어진다. 입력의 끝은 네 값이 모두 00인 줄(0 0 0 0)로 표시되며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스에 대해 먼저 Case k: 형태의 줄을 출력한다(kk는 11부터 시작하는 케이스 번호). 그 다음, 입력으로 주어진 각 점에 대해 그 점의 색을 black 또는 white로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    81 32 0.333333333333 0.5
    6
    16 30
    16 25
    16 12.0001
    16 11.9999
    16 7.987654321
    16 7.0123456789
    10 10 0.123456789 0.987654321
    2
    0.432 0.9876
    9.432 0.9876
    0 0 0 0
    
    예상 출력
    Case 1:
    black
    black
    white
    black
    white
    white
    Case 2:
    white
    black