Jetpack Sniper 3000 Fragfest Extreme

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

요약
여러 개의 10x10 높이 격자와 네 개의 3차원 점이 주어질 때, 건물이 자신과 플레이어 A, B, C를 잇는 선분을 가로막는지 판정한다.
난이도

어려움10점 중 8점

유형
기하, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

당신은 새 온라인 게임 Jetpack Sniper 3000 Fragfest Extreme 의 베타 테스터입니다. 플레이어들은 제트팩을 메고 대도시 상공을 날아다니며 레이저 총으로 서로를 쏩니다. 몸을 숨길 수 있는 유일한 엄폐물은 도시 곳곳에 솟아 있는 유리 마천루(고층 빌딩)뿐입니다.

게임을 돕기 위해, 당신은 현재 당신이 쏠 수 있는(또는 당신을 쏠 수 있는) 플레이어가 누구인지 알려 주는 프로그램을 작성했습니다. 즉, 장애물에 가리지 않고 직선으로 당신의 위치를 바라볼 수 있는 플레이어들입니다.

입력

첫 줄에는 도시의 수를 나타내는 정수 nn 이 주어집니다.

각 도시는 10×1010 \times 10 격자의 블록으로 이루어져 있습니다. 각 블록에는 높이가 정수로 00 부터 99 까지인 마천루가 하나씩 서 있습니다. 한 도시는 1010 개의 줄, 각 줄에 1010 개의 숫자로 주어지며, 위에서부터 00 번째 행 yy, 왼쪽에서부터 00 번째 열 xx 에 있는 숫자가 그 블록에 서 있는 마천루의 높이입니다.

격자 다음에는 네 쌍의 좌표가 한 줄에 주어집니다. 첫 번째는 당신의 위치이고, 나머지 세 쌍은 각각 플레이어 A, B, C의 위치입니다. 각 위치는 (x, y, height) 형식으로 주어지며, xx 는 왼쪽에서 오른쪽으로, yy 는 위에서 아래로 커지고, height 는 지면에서 위로 잰 높이입니다. 점 (0,0,0)(0, 0, 0) 은 격자의 왼쪽 위 모서리이며 지면 높이에 있습니다.

참고:

  • 좌표는 실수(소수점)일 수 있습니다.
  • 당신을 포함해 어떤 플레이어도 건물 내부나 그 표면, 모서리, 꼭짓점 위에 있지 않습니다. 또한 어떤 시선도 결과를 바꿀 만한 방식으로 건물의 면, 모서리, 꼭짓점에 접하지 않습니다.

출력

각 도시마다 먼저 헤더 Fragfest City #X 를 출력합니다. 여기서 X 는 도시의 번호로, 첫 번째 도시는 11, 두 번째 도시는 22 와 같이 매깁니다. 그다음 플레이어 A, B, C 순서대로 한 줄씩 출력합니다. 건물이 그 플레이어에 대한 당신의 직선 시야를 가리지 않으면 Player Y is in sight 를, 가리면 Player Y is hiding 을 출력합니다(Y 는 플레이어의 문자입니다).

다음과 같이 단순화하여 가정합니다.

  1. 각 마천루는 크기가 1×1×height1 \times 1 \times \text{height} 인 직육면체입니다.
  2. 각 플레이어는 하나의 점입니다.
  3. 플레이어는 다른 플레이어의 시야를 가리지 않습니다.

예제1

  1. 예제 1

    입력
    2
    0000005000
    0000005000
    0000005000
    0000005000
    9999999999
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    (0,0,0) (10, 10, 10) (5.5, 5.5, 5.5) (9, 1.0, 9)
    0123456789
    1000000000
    2064646400
    3045555600
    4065005400
    5045005600
    6065555400
    7046464600
    8000000000
    9123456789
    (4.5, 4.5, 5.5) (7.5, 4.5, 5.5) (1.5, 4.5, 5.1) (7.5, 4.5, 6.5)
    
    예상 출력
    Fragfest City #1
    Player A is hiding
    Player B is hiding
    Player C is in sight
    Fragfest City #2
    Player A is in sight
    Player B is hiding
    Player C is in sight