만드는 중입니다

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

공격 릴레이

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

요약
N명의 위치와 시야 방향이 주어졌을 때, K번의 턴 동안 각 멤버가 받는 총 피해를 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
시뮬레이션, 기하, 정렬
정답자
아직 제출이 없습니다

문제

이 문제에서 두 지점 사이의 거리는 택시 거리로 계산한다. 두 점 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2) 사이의 택시 거리는 ∣x1−x2∣+∣y1−y2∣|x_1 - x_2| + |y_1 - y_2|이다.

두 부원 사이의 공격은 다음 조건을 따른다.

  • 부원 A가 부원 B를 공격하려면 A가 B를 볼 수 있어야 한다. 시야 방향은 +x+x, −x-x, +y+y, −y-y 중 하나이며, 시야각은 좌우 45도다. 시야각에 걸치는 부원도 볼 수 있다고 본다.
  • 부원 A가 부원 B를 공격하면 공격력은 A와 B 사이의 거리와 같다.

싸이컴 부원들은 공격 릴레이라는 게임을 즐긴다. 게임은 총 KK번의 턴으로 진행된다. 각 턴에는 지정된 술래가 있으며, 턴은 다음과 같이 진행된다.

  1. 술래를 볼 수 있는 싸이컴의 모든 부원이 술래를 공격한다.
  2. 술래를 제외하고 술래의 시야 안에 있는 부원 중 술래에게 가장 가까운 부원이 다음 턴의 술래가 된다. 그런 부원이 여럿이면 번호가 가장 작은 부원이 술래가 된다. 술래가 볼 수 있는 부원이 없으면 다음 번호의 부원이 술래가 된다. (NN번 부원의 다음 번호는 11번 부원이다.)

첫 번째 턴의 술래는 자랑스러운 1번 부원 앤디가 맡는다.

예를 들어 K=4K=4이고 부원들이 아래 그림처럼 위치한 경우를 보자.

  • 1번 턴에서는 부원 4가 부원 1을 공격한다. 이후 부원 3이 술래가 된다.
  • 2번 턴에서는 부원 1이 부원 3을 공격한다. 이후 부원 4가 술래가 된다.
  • 3번 턴에서는 부원 1과 3이 부원 4를 공격한다. 이후 부원 1이 술래가 된다.
  • 4번 턴에서는 부원 4가 부원 1을 공격한다. 이후 부원 3이 술래가 된다.

게임이 전부 끝난 후 각 부원이 받은 공격량의 총합을 출력하는 프로그램을 작성하라.

입력

첫 줄에 두 정수 NN과 KK가 주어진다.

둘째 줄부터 N+1N+1번째 줄까지 NN명의 부원에 대한 좌표와 시야 정보가 주어진다. i+1i+1번째 줄에는 ii번째 부원의 좌표 XiX_i, YiY_i와 보는 방향 SiS_i가 주어진다. SiS_i는 0, 1, 2, 3 중 하나이며, 각각 +x+x, −x-x, +y+y, −y-y 방향을 뜻한다.

출력

각 부원이 받은 공격량의 총합을 출력하라. ii번째 부원의 총합은 ii번째 줄에 출력한다.

답이 커질 수 있으므로 998244353으로 나눈 나머지를 출력한다.

제한

  • 2≤N≤1052 \le N \le 10^5
  • 1≤K≤10181 \le K \le 10^{18}
  • 1≤Xi≤1051 \le X_i \le 10^5 (1≤i≤N1 \le i \le N)
  • 1≤Yi≤1051 \le Y_i \le 10^5 (1≤i≤N1 \le i \le N)
  • 0≤Si≤30 \le S_i \le 3 (1≤i≤N1 \le i \le N)
  • (Xi,Yi)≠(Xj,Yj)(X_i, Y_i) \neq (X_j, Y_j) (1≤i<j≤N1 \le i < j \le N)

힌트

예시 이미지의 방향은 아래와 같다.

예제1

  1. 예제 1

    입력
    4 4
    2 5 0
    1 5 2
    4 6 3
    7 2 1
    
    예상 출력
    16
    0
    3
    15