만드는 중입니다

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

이진 표

면접 대비

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

요약
이진 표에 직사각형 뒤집기를 적용할 때마다, 왼쪽 위 모서리에서 시작하는 직사각형 뒤집기로 표를 모두 0으로 만드는 최소 횟수를 구합니다.
난이도

보통10점 중 6점

유형
행렬, 누적 합
정답자
아직 제출이 없습니다

문제

nn개의 행과 mm개의 열로 이루어진 표 AA가 있다. 표의 각 칸에는 0 또는 1을 적을 수 있다. 행은 위에서 아래로 1,…,n1, \ldots, n번, 열은 왼쪽에서 오른쪽으로 1,…,m1, \ldots, m번 번호를 붙이며, ii번째 행과 jj번째 열에 있는 칸의 좌표는 (i,j)(i, j)이다. 아래 그림도 참고한다.

표에서 연산을 수행할 수 있다. 연산은 네 수 i1,j1,i2,j2i_1, j_1, i_2, j_2로 주어진다. 대각선 방향의 두 꼭짓점이 (i1,j1)(i_1, j_1)과 (i2,j2)(i_2, j_2)인 직사각형에 속한 칸을 모두 고른 뒤, 각 칸의 값을 바꾼다. 0은 1로, 1은 0으로 바꾼다.

직사각형의 왼쪽 위 꼭짓점이 표의 왼쪽 위 꼭짓점과 같은 연산, 즉 i1=j1=1i_1 = j_1 = 1인 연산을 간단한 연산이라고 한다.

처음에는 표의 모든 수가 0이다. 이후 표를 바꾸는 연산을 qq번 수행한다. 연산을 수행할 때마다, 표의 모든 수를 다시 0으로 만들기 위해 간단한 연산을 추가로 몇 번 해야 하는지 구한다.

입력

첫 줄에 세 정수 nn, mm, qq가 주어진다 (1≤n,m≤10001 \le n, m \le 1000, 1≤q≤1000001 \le q \le 100000). 표의 크기와 연산의 개수이다.

이후 qq개의 줄에 각각 연산을 나타내는 네 정수 i1i_1, j1j_1, i2i_2, j2j_2가 주어진다 (1≤i1≤i2≤n1 \le i_1 \le i_2 \le n, 1≤j1≤j2≤m1 \le j_1 \le j_2 \le m).

출력

qq개의 줄을 출력한다. ii번째 줄에는 입력의 처음 ii개 연산을 수행한 뒤, 표의 모든 수를 0으로 만드는 데 필요한 간단한 연산의 최소 횟수를 출력한다.

힌트

아래 그림의 윗줄은 입력의 세 연산을 차례로 수행한 뒤의 표 AA이다. 각 열은 최소 횟수의 간단한 연산으로 표를 0으로 되돌리는 과정을 보여준다.

예제1

  1. 예제 1

    입력
    2 3 3
    1 2 2 2
    1 1 2 1
    1 2 1 3
    
    예상 출력
    2
    1
    3