만드는 중입니다

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

사각형 칠하기

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

요약
n×m 보드에 가로, 세로, 대각선 색칠 연산을 적용한 뒤 검은색이 된 칸의 개수를 구합니다.
난이도

보통10점 중 6점

유형
세그먼트 트리, 정렬, 구간
정답자
아직 제출이 없습니다

문제

nn열과 mm행으로 이루어진 체스판이 있다. 행과 열은 1부터 번호가 매겨지며, ii열 jj행에 있는 칸을 (i,j)(i, j)로 나타낸다. 처음에는 모든 칸이 흰색이다. 이 체스판에 qq번의 칠하기 연산을 수행한다. 연산은 세 종류이다. 첫 번째 종류는 가로줄을 검은색으로 칠한다. y1=y2y_1 = y_2인 두 칸 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)가 주어지면, 두 칸을 포함하여 그 사이의 모든 칸을 검은색으로 칠한다. 두 번째 종류는 세로줄을 검은색으로 칠한다. x1=x2x_1 = x_2인 두 칸 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)가 주어지면, 두 칸을 포함하여 그 사이의 모든 칸을 검은색으로 칠한다. 세 번째 종류는 대각선을 검은색으로 칠한다. x2−x1=y2−y1x_2 - x_1 = y_2 - y_1이고 x1≤x2x_1 \le x_2인 두 칸 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)가 주어지면, 0≤i≤x2−x10 \le i \le x_2 - x_1인 모든 (x1+i,y1+i)(x_1 + i, y_1 + i) 칸을 검은색으로 칠한다. 세 번째 종류의 연산은 최대 5번 나온다. qq번의 연산을 마친 뒤 검은색 칸의 개수를 구한다.

입력

첫 줄에 테스트 케이스 번호 cc가 주어진다. c=0c = 0이면 예제 테스트이다. 둘째 줄에는 양의 정수 nn, mm, qq가 주어진다. 각각 열의 수, 행의 수, 칠하기 연산의 수이다. 이어서 qq개의 줄에 양의 정수 tt, x1x_1, y1y_1, x2x_2, y2y_2가 한 줄씩 주어진다. t=1t = 1, t=2t = 2, t=3t = 3은 각각 세 종류의 연산을 뜻하며, x1x_1, y1y_1, x2x_2, y2y_2는 그 연산의 매개변수이다.

출력

모든 연산을 마친 뒤 체스판에 있는 검은색 칸의 개수를 한 줄에 출력한다.

제한

모든 테스트 데이터에 대해 1≤n,m≤1091 \le n, m \le 10^9, 1≤q≤1051 \le q \le 10^5, 1≤x1,x2≤n1 \le x_1, x_2 \le n, 1≤y1,y2≤m1 \le y_1, y_2 \le m이 보장된다. 세 번째 종류의 연산은 최대 5번이다.

예제1

  1. 예제 1

    입력
    0
    5 5 3
    1 1 3 5 3
    2 3 1 3 5
    3 1 1 5 5
    
    예상 출력
    13