#P1006. Rooks Defenders

Rooks Defenders

루크 수비수

# 제목 설명

크기가 n×nn \times n인 정사각형 바둑판이 있습니다.행의 번호는 위에서 아래로 11에서 nn이며 열의 번호는 왼쪽에서 오른쪽으로 11에서 nn입니다.따라서 각 셀은 한 쌍의 정수 (x,y)(x, y) (1x,yn1 \le x, y \le n)로 표시되며 여기서 xx는 행 번호이고 yy는 열 번호입니다.

다음과 같은 세 가지 유형의 qq쿼리를 실행해야 합니다.

  • (x,y)(x, y) 에 새 차를 넣습니다.
  • (x,y)(x, y) 에서 새 차를 제거합니다.이전에 이 셀에 새 차를 넣었음을 보증합니다.
  • 바둑판의 서브사각형 (x1,y1)(x2,y2)(x_1, y_1) - (x_2, y_2) 의 각 셀이 적어도 한 대의 차에 의해 공격되었는지 확인합니다.

서브사각형은 (x,y)(x, y) 셀의 집합으로, 각 셀은 x1xx2x_1 \le x \le x_2y1yy2y_1 \le y \le y_2의 두 가지 조건을 충족합니다.

a=ca = c또는 b=db = d인 경우 (c,d)(c, d) 셀에 배치된 차가 (a,b)(a, b) 셀을 공격합니다.구체적으로 차가 포함된 셀은 이 차의 공격을 받게 된다.

# 형식 입력

    • 입력 * *

첫 번째 행에는 두 개의 정수 nnqq(1n1051 \le n \le 10^5, 1q21051 \le q \le 2 \cdot 10^5) 가 포함되어 있습니다.

다음 qq행의 각 행에는 질의에 대한 설명이 포함되어 있습니다.설명은 질의 유형을 나타내는 정수 tt(t{1,2,3}t \in \{1, 2, 3\})로 시작합니다.

  • t=1t = 1의 경우 두 정수 xxyy(1x,yn1 \le x, y \le n) - 새 셀의 좌표를 배치합니다.주어진 쿼리 시간에 (x,y)(x, y) 셀에 새 차가 없음을 보장합니다.
  • t=2t = 2이면 xxyy이 두 정수를 따릅니다(1x,yn1 \le x, y \le n) - 새 셀의 좌표를 제거합니다.주어진 쿼리 시간에 (x,y)(x, y) 셀에 차가 있음을 보장합니다.
  • t=3t = 3, x1,y1,x2x_1, y_1, x_2y2y_2이후 네 정수(1x1x2n1 \le x_1 \le x_2 \le n, 1y1y2n1 \le y_1 \le y_2 \le n) - 각 셀이 적어도 한 대의 차로 공격되었는지 확인하는 하위 사각형입니다.

qq개의 질문 중 세 번째 유형에 속하는 질문이 하나 이상 있는지 확인할 수 있습니다.

# 출력 형식

세 번째 유형의 각 질의에 대한 답변을 별도의 행에 인쇄합니다.하위 사각형의 각 셀이 하나 이상의 차에 의해 공격되는 경우 예 (따옴표 없음) 를 인쇄합니다.

그렇지 않으면 "아니오" 를 인쇄합니다 (따옴표 없음).

8 10
1 2 4
3 6 2 7 2
1 3 2
3 6 2 7 2
1 4 3
3 2 6 4 8
2 4 3
3 2 6 4 8
1 4 8
3 2 6 4 8
No
Yes
Yes
No
Yes

# 힌트

    • 주 * *

예를 들어 설명하다.처음 두 번의 질의를 거친 후 바둑판은 다음 그림과 같습니다 (알파벳 RR은 차가 있는 셀을 나타내고 세 번째 질의의 하위 사각형은 녹색으로 표시됨).

세 번째 및 네 번째 질의가 수행된 바둑판:

다섯 번째 및 여섯 번째 질의를 수행한 후 바둑판:

일곱 번째 및 여덟 번째 질의를 수행한 후 바둑판:

마지막 두 번의 질의를 수행한 후 바둑판: