행성 전쟁
시간 제한2초메모리 제한1024 MB
두 플레이어가 행성 사이에서 함선을 보내고 전투를 벌이는 게임을 시뮬레이션하고, 각 행성의 소유자와 함선 수를 질의에 답합니다.
문제
행성 전쟁 게임의 인기가 점점 높아지고 있다. 규칙은 매우 단순하다. 평면 위에 개의 행성이 있고, 각 행성은 좌표 , 와 우주선 생산 속도 로 정해진다. 두 명의 플레이어가 게임을 한다. 처음에 각 플레이어는 행성 하나씩을 가지고 있고, 나머지 행성은 모두 중립이다. 각 행성에는 처음에 우주선 대가 있다. 중립 행성의 우주선은 중립 병력이고, 플레이어의 행성에 있는 우주선은 그 플레이어의 병력이다.
게임은 라운드 단위로 진행된다. 각 라운드가 시작되면 중립이 아닌 행성마다 우주선 대가 추가로 생긴다. 새로 생긴 우주선은 즉시 그 행성을 소유한 플레이어의 것이 된다.
그다음 플레이어들은 행성 사이로 우주선을 보낸다. 플레이어는 자신이 소유한 행성에서만 우주선을 보낼 수 있고, 그 행성에 있는 우주선 수를 넘지 않는 만큼만 보낼 수 있다. 좌표 인 행성에서 좌표 인 행성으로 우주선을 보내면, 우주선은 라운드 뒤에 도착한다. (은 보다 작지 않은 가장 작은 정수이다.)
그다음 도착한 우주선이 각 행성에 내린다.
라운드가 끝날 때 한 행성에 두 플레이어의 병력이 모두 있으면 둘은 전투를 벌인다. 전투에서 각 플레이어는 대의 우주선을 잃는다. 여기서 은 그 행성에 있는 첫 번째 플레이어의 우주선 수이고, 는 두 번째 플레이어의 우주선 수이다. 전투 후 행성에 플레이어의 우주선과 중립 우주선이 함께 남아 있으면, 같은 규칙으로 그 둘이 싸운다.
모든 전투가 끝난 뒤 행성에 어느 한 플레이어의 우주선이 0대보다 많이 남아 있으면 그 플레이어가 행성을 점령한다. 그렇지 않으면 행성의 주인은 그대로 남는다. 이로써 라운드가 끝난다.
이 게임의 사건을 처리하고, 번째 행성에 우주선이 몇 대 있는지와 누가 그 행성을 소유하는지 묻는 질의에 답하는 프로그램을 작성하라.
입력
첫 줄에 행성의 수 ()이 주어진다. 이어지는 개의 줄에는 각각 정수 , , , 네 개가 주어진다. 와 ()는 행성의 좌표, ()는 우주선 생산 속도, ()는 게임 시작 시 행성의 우주선 수이다. 다음 줄에는 첫 번째와 두 번째 플레이어가 가진 행성의 번호가 주어진다. 행성은 입력 순서대로 1번부터 번호가 붙는다. 모든 행성의 좌표는 서로 다르다.
다음 줄에는 처리할 사건과 질의의 수 ()이 주어진다. 각 질의는 한 줄을 차지하며, 종류를 나타내는 정수 로 시작한다.
이면 라운드가 끝난다. 모든 전투는 라운드가 끝나는 순간에 일어난다.
이면 병력 이동이다. 같은 줄에 양의 정수 , , 가 이어서 주어지며, 각각 우주선을 출발시키는 행성 번호, 도착 행성 번호, 보내는 우주선 수이다. 행성 에는 항상 대 이상이 있고, 행성 는 중립이 아니며, 와 는 서로 다르다고 보장된다.
이면 정수 이 이어서 주어지며, 그 행성에 대한 정보를 묻는다.
출력
각 행성 질의마다 한 줄에 소유자와 질의 시점의 우주선 수를 출력한다. 출력 형식은 예제 출력을 따른다. 모든 질의는 우주선 생산 이후, 도착하는 우주선이 행성에 내리기 전 시점에 답한다.
힌트
예제에서 첫 번째 라운드에 출발한 우주선은 두 번째 라운드가 끝날 때에야 2번 행성에 도착한다. 그때 2번 행성에는 중립 우주선 10대, 첫 번째 플레이어의 우주선 60대, 두 번째 플레이어의 우주선 50대가 있다. 전투 후에는 중립 우주선 10대와 첫 번째 플레이어의 우주선 10대가 남는다. 그다음 전투 결과 2번 행성에 우주선이 한 대도 남지 않아 행성은 중립 상태로 남는다.
세 번째 라운드에 첫 번째 플레이어가 우주선 한 대를 2번 행성으로 보내고, 이 우주선은 네 번째 라운드가 끝날 때 행성을 점령한다.
다섯 번째 라운드에 두 번째 플레이어가 우주선 31대를 2번 행성으로 보내지만, 도착했을 때 그 행성에는 이미 첫 번째 플레이어의 우주선 31대가 있다. 두 무리의 우주선은 서로 모두 소멸하고, 행성은 첫 번째 플레이어의 통제 아래 남는다.