체스판
시간 제한1초메모리 제한128 MB
최대 200,000개의 기물이 놓인 m×m 체스판에서 각 기물이 한 수로 잡을 수 있는 빈 칸의 개수를 센다.
문제
아주 큰 체스판 위에 같은 색의 말들이 여러 개 놓여 있다. 어떤 말이 한 번의 이동으로 어떤 칸에 도달할 수 있을 때, 그 말이 해당 칸을 잡는다고 한다. 구체적으로는 다음 두 조건을 모두 만족해야 한다.
- 도착 칸에 다른 말이 놓여 있지 않다.
- 퀸, 룩, 비숍의 경우 출발 칸과 도착 칸 사이의 경로에 다른 말이 하나도 없다.
말은 자기가 서 있는 칸은 잡지 못한다. 한 칸을 여러 말이 동시에 잡을 수도 있다.
각 말은 표준 체스 규칙대로 움직인다.
K(킹): 인접한 8방향으로 한 칸 이동한다.S(나이트): L자 모양(2칸 후 1칸)으로 뛰며, 다른 말에 막히지 않는다.W(룩): 가로나 세로로 원하는 만큼 미끄러진다.G(비숍): 대각선으로 원하는 만큼 미끄러진다.H(퀸): 가로, 세로, 대각선으로 원하는 만큼 미끄러진다.
모든 말에 대해 그 말이 잡는 칸의 개수를 구하여라.
입력
첫째 줄에 두 정수 과 이 공백 하나로 구분되어 주어진다 (, ). 은 말의 개수, 은 정사각형 체스판의 한 변의 길이이다.
다음 개의 줄에는 각각 F x y 형식으로 말의 정보가 주어진다. F는 말의 종류를 나타내는 문자이다.
G- 비숍H- 퀸K- 킹S- 나이트W- 룩
는 말의 위치이다 (). 같은 위치에 두 개 이상의 말이 놓이는 경우는 없다.
출력
개의 줄을 출력한다. 번째 줄에는 입력에서 번째 말이 잡는 칸의 개수를 정수 하나로 출력한다.
힌트

위 그림은 예제의 체스판을 나타낸다. 서로 다른 모양의 선은 미끄러지는 말들이 잡는 칸을 나타내며, 큰 점은 나이트가 도달할 수 있는 칸을 나타낸다.