엔도르의 카멜레온

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

요약
길이 L인 막대 위를 걷는 카멜레온이 충돌할 때 방향을 바꾸고 색을 넘기며 각 색으로 이동한 총 거리를 구합니다.
난이도

보통10점 중 7점

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

문제

엔도르의 숲에는 은하계에서 가장 긴 막대가 있다. 길이가 LL미터인 이 막대 위에 카멜레온 NN마리가 있다. 카멜레온은 각각 초속 1미터로 왼쪽이나 오른쪽 중 한 방향으로 움직이고, KK가지 색 가운데 하나로 칠해져 있다.

엔도르의 카멜레온은 오래된 개미의 법칙을 따른다. 막대 끝에 닿아 막대에서 떨어질 때까지 걷기를 멈추지 않고, 다른 카멜레온과 부딪히면 180도 돌아 반대 방향으로 계속 걷는다. 또 색이 aa인 왼쪽으로 가던 카멜레온이 색이 bb인 오른쪽으로 가던 카멜레온과 부딪히면, 부딪히기 전에 왼쪽으로 가던 카멜레온은 색 bb가 되고, 부딪히기 전에 오른쪽으로 가던 카멜레온은 색 (a+b) mod K(a + b) \bmod K가 된다.

카멜레온의 처음 위치와 색, 이동 방향이 모두 주어진다. 색마다 그 색인 채로 카멜레온이 걸은 거리의 합을 구하여라.

입력

첫째 줄에 정수 NN, KK, LL이 주어진다 (1≤N≤100 0001 \le N \le 100\,000, 1≤K≤401 \le K \le 40, 1≤L≤1 000 0001 \le L \le 1\,000\,000).

다음 NN개 줄 가운데 ii번째 줄에는 세 값이 주어진다. 막대 왼쪽 끝에서 ii번째 카멜레온까지의 거리 did_i (0≤di≤L0 \le d_i \le L), ii번째 카멜레온의 색 bib_i (0≤bi≤K−10 \le b_i \le K - 1), 그리고 이동 방향을 나타내는 문자 하나이다. 문자는 왼쪽이면 L, 오른쪽이면 D이다.

did_i는 모두 다르고 증가하는 순서로 주어진다.

출력

KK개 줄을 출력한다. 첫째 줄부터 색 00, 색 11, 차례로 색 K−1K - 1까지, 그 색인 채로 카멜레온이 걸은 거리의 합을 한 줄에 하나씩 출력한다.

합은 언제나 0.50.5의 배수이므로 소수점 아래 한 자리까지 출력한다. 합이 44면 4.0, 2.52.5면 2.5로 출력한다.

힌트

길이가 1010인 막대의 왼쪽 끝에서 색 00인 카멜레온이 오른쪽으로 출발하고, 오른쪽 끝에서 색 11인 카멜레온이 왼쪽으로 출발했다고 하자. 두 카멜레온은 각각 55미터를 걸은 뒤 막대 한가운데에서 부딪힌다. 부딪힌 뒤 오른쪽으로 방향을 바꾼 카멜레온의 색은 00이고, 왼쪽으로 방향을 바꾼 카멜레온의 색은 11이다.

예제3

  1. 예제 1

    입력
    2 3 10
    0 0 D
    10 1 L
    
    예상 출력
    10.0
    10.0
    0.0
    
  2. 예제 2

    입력
    4 3 7
    1 0 D
    3 0 D
    4 1 L
    6 2 D
    
    예상 출력
    10.0
    4.0
    1.0
    
  3. 예제 3

    입력
    4 4 5
    1 1 D
    3 3 L
    4 2 D
    5 0 L
    
    예상 출력
    2.5
    4.0
    2.5
    4.0