만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

행성 전쟁

시간 제한2초메모리 제한1024 MB

요약
두 플레이어가 행성 사이에서 함선을 보내고 전투를 벌이는 게임을 시뮬레이션하고, 각 행성의 소유자와 함선 수를 질의에 답합니다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 구현, 수학
정답자
아직 제출이 없습니다

문제

행성 전쟁 게임의 인기가 점점 높아지고 있다. 규칙은 매우 단순하다. 평면 위에 nn개의 행성이 있고, 각 행성은 좌표 xix_i, yiy_i와 우주선 생산 속도 sis_i로 정해진다. 두 명의 플레이어가 게임을 한다. 처음에 각 플레이어는 행성 하나씩을 가지고 있고, 나머지 행성은 모두 중립이다. 각 행성에는 처음에 우주선 pip_i대가 있다. 중립 행성의 우주선은 중립 병력이고, 플레이어의 행성에 있는 우주선은 그 플레이어의 병력이다.

게임은 라운드 단위로 진행된다. 각 라운드가 시작되면 중립이 아닌 행성마다 우주선 sis_i대가 추가로 생긴다. 새로 생긴 우주선은 즉시 그 행성을 소유한 플레이어의 것이 된다.

그다음 플레이어들은 행성 사이로 우주선을 보낸다. 플레이어는 자신이 소유한 행성에서만 우주선을 보낼 수 있고, 그 행성에 있는 우주선 수를 넘지 않는 만큼만 보낼 수 있다. 좌표 (sx,sy)(sx, sy)인 행성에서 좌표 (dx,dy)(dx, dy)인 행성으로 우주선을 보내면, 우주선은 ⌈(sx−dx)2+(sy−dy)2⌉\lceil \sqrt{(sx-dx)^2+(sy-dy)^2} \rceil 라운드 뒤에 도착한다. (⌈a⌉\lceil a \rceil은 aa보다 작지 않은 가장 작은 정수이다.)

그다음 도착한 우주선이 각 행성에 내린다.

라운드가 끝날 때 한 행성에 두 플레이어의 병력이 모두 있으면 둘은 전투를 벌인다. 전투에서 각 플레이어는 x=min⁡(p1,p2)x = \min(p_1,p_2)대의 우주선을 잃는다. 여기서 p1p_1은 그 행성에 있는 첫 번째 플레이어의 우주선 수이고, p2p_2는 두 번째 플레이어의 우주선 수이다. 전투 후 행성에 플레이어의 우주선과 중립 우주선이 함께 남아 있으면, 같은 규칙으로 그 둘이 싸운다.

모든 전투가 끝난 뒤 행성에 어느 한 플레이어의 우주선이 0대보다 많이 남아 있으면 그 플레이어가 행성을 점령한다. 그렇지 않으면 행성의 주인은 그대로 남는다. 이로써 라운드가 끝난다.

이 게임의 사건을 처리하고, ii번째 행성에 우주선이 몇 대 있는지와 누가 그 행성을 소유하는지 묻는 질의에 답하는 프로그램을 작성하라.

입력

첫 줄에 행성의 수 nn (2≤n≤1002 \le n \le 100)이 주어진다. 이어지는 nn개의 줄에는 각각 정수 xx, yy, ss, pp 네 개가 주어진다. xx와 yy (∣x∣,∣y∣≤20|x|, |y| \le 20)는 행성의 좌표, ss (0≤s≤100 \le s \le 10)는 우주선 생산 속도, pp (0≤p≤1000 \le p \le 100)는 게임 시작 시 행성의 우주선 수이다. 다음 줄에는 첫 번째와 두 번째 플레이어가 가진 행성의 번호가 주어진다. 행성은 입력 순서대로 1번부터 번호가 붙는다. 모든 행성의 좌표는 서로 다르다.

다음 줄에는 처리할 사건과 질의의 수 mm (0≤m≤10000 \le m \le 1000)이 주어진다. 각 질의는 한 줄을 차지하며, 종류를 나타내는 정수 tt로 시작한다.

t=0t = 0이면 라운드가 끝난다. 모든 전투는 라운드가 끝나는 순간에 일어난다.

t=1t = 1이면 병력 이동이다. 같은 줄에 양의 정수 spsp, dpdp, shipsships가 이어서 주어지며, 각각 우주선을 출발시키는 행성 번호, 도착 행성 번호, 보내는 우주선 수이다. 행성 spsp에는 항상 shipsships대 이상이 있고, 행성 spsp는 중립이 아니며, spsp와 dpdp는 서로 다르다고 보장된다.

t=2t = 2이면 정수 planetplanet이 이어서 주어지며, 그 행성에 대한 정보를 묻는다.

출력

각 행성 질의마다 한 줄에 소유자와 질의 시점의 우주선 수를 출력한다. 출력 형식은 예제 출력을 따른다. 모든 질의는 우주선 생산 이후, 도착하는 우주선이 행성에 내리기 전 시점에 답한다.

힌트

예제에서 첫 번째 라운드에 출발한 우주선은 두 번째 라운드가 끝날 때에야 2번 행성에 도착한다. 그때 2번 행성에는 중립 우주선 10대, 첫 번째 플레이어의 우주선 60대, 두 번째 플레이어의 우주선 50대가 있다. 전투 후에는 중립 우주선 10대와 첫 번째 플레이어의 우주선 10대가 남는다. 그다음 전투 결과 2번 행성에 우주선이 한 대도 남지 않아 행성은 중립 상태로 남는다.

세 번째 라운드에 첫 번째 플레이어가 우주선 한 대를 2번 행성으로 보내고, 이 우주선은 네 번째 라운드가 끝날 때 행성을 점령한다.

다섯 번째 라운드에 두 번째 플레이어가 우주선 31대를 2번 행성으로 보내지만, 도착했을 때 그 행성에는 이미 첫 번째 플레이어의 우주선 31대가 있다. 두 무리의 우주선은 서로 모두 소멸하고, 행성은 첫 번째 플레이어의 통제 아래 남는다.

예제1

  1. 예제 1

    입력
    3
    0 0 1 100
    1 0 10 10
    2 0 0 100
    1 3
    26
    1 1 2 60
    1 3 2 50
    2 1
    2 2
    2 3
    0
    2 1
    2 2
    2 3
    0
    2 1
    2 2
    2 3
    1 1 2 1
    2 1
    2 2
    2 3
    0
    0
    2 1
    2 2
    2 3
    1 3 2 31
    0
    0
    2 2
    
    예상 출력
    Player1 41
    Neutral 10
    Player2 50
    Player1 42
    Neutral 10
    Player2 50
    Player1 43
    Neutral 0
    Player2 50
    Player1 42
    Neutral 0
    Player2 50
    Player1 44
    Player1 11
    Player2 50
    Player2 20