만드는 중입니다

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

2차원 컨베이어 벨트

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

요약
매일 N×N 격자의 빈 칸 하나에 컨베이어 벨트를 설치합니다. 매일 설치한 뒤 나머지 빈 칸을 최적으로 채웠을 때, 물건이 격자 안에서 영원히 맴도는 칸의 최소 개수를 구합니다.
난이도

어려움10점 중 8점

유형
행렬, 그래프, 구현
정답자
아직 제출이 없습니다

문제

Farmer John의 우유 공장은 컨베이어 벨트가 놓인 N×NN \times N 격자로 나타낼 수 있다 (1≤N≤10001 \le N \le 1000). (a,b)(a,b) 칸은 위에서 aa번째 행, 왼쪽에서 bb번째 열에 있는 칸이다. 칸은 다음 다섯 종류 중 하나다. L은 왼쪽을 향한 벨트로, 그 위의 물건을 매 단위 시간마다 왼쪽으로 1칸 옮긴다. R은 오른쪽, U는 위쪽, D는 아래쪽으로 같은 방식으로 옮긴다. ?는 아직 벨트를 짓지 않은 칸이다. 벨트는 격자 밖으로도 물건을 옮길 수 있다. 칸 cc에 놓인 물건이 격자 밖으로 영원히 나가지 못하고 격자 안에서 계속 움직인다면, cc는 사용할 수 없는 칸이다.

처음에는 모든 칸이 ?다. 1일부터 QQ일까지 매일 Farmer John은 벨트가 없는 칸을 하나 골라 벨트를 짓는다. ii일에는 (ri,ci)(r_i,c_i) 칸에 종류 tit_i의 벨트를 짓는다 (1≤ri,ci≤N1 \le r_i,c_i \le N). 해당 칸에는 아직 벨트가 없음이 보장된다.

매일 하루가 끝난 뒤, 벨트가 없는 나머지 칸에 벨트를 최적으로 지었을 때 사용할 수 없는 칸의 최소 개수를 구하라.

입력

첫 줄에 NN과 QQ가 주어진다. 이후 QQ개의 줄에 각각 rir_i, cic_i, tit_i가 순서대로 주어진다.

출력

QQ개의 줄을 출력한다. ii번째 줄에는 ii일이 끝난 뒤, 벨트가 없는 나머지 칸에 최적으로 벨트를 지었을 때 사용할 수 없는 칸의 최소 개수를 출력한다.

예제3

  1. 예제 1

    입력
    3 5
    1 1 R
    3 3 L
    3 2 D
    1 2 L
    2 1 U
    
    예상 출력
    0
    0
    0
    2
    3
    
  2. 예제 2

    입력
    3 8
    1 1 R
    1 2 L
    1 3 D
    2 3 U
    3 3 L
    3 2 R
    3 1 U
    2 1 D
    
    예상 출력
    0
    2
    2
    4
    4
    6
    6
    9
    
  3. 예제 3

    입력
    4 13
    2 2 R
    2 3 R
    2 4 D
    3 4 D
    4 4 L
    4 3 L
    4 2 U
    3 1 D
    4 1 R
    2 1 L
    1 1 D
    1 4 L
    1 3 D
    
    예상 출력
    0
    0
    0
    0
    0
    0
    0
    0
    11
    11
    11
    11
    13