명절 그림 그리기

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

요약
R x C 격자(R은 최대 50000, C는 최대 15)에 직사각형 칠하기 연산을 순서대로 적용하고, 각 연산 직후 목표 그림과 색이 같은 칸의 개수를 구한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 비트 연산, 구현, 행렬
정답자
아직 제출이 없습니다

문제

소들이 명절을 기념해 그림을 그리려고 합니다. 그림은 R×CR \times C 크기의 격자로 표현되며 (1≤R≤50,0001 \le R \le 50{,}000, 1≤C≤151 \le C \le 15), 각 칸의 값은 00 또는 11입니다. 행은 위에서부터 11번부터 RR번까지, 열은 왼쪽에서부터 11번부터 CC번까지 번호를 매깁니다. 완성하고 싶은 목표 그림이 하나 정해져 있습니다.

시간이 부족한 소들은 페인트를 통째로 뿌리는 기계를 만들었습니다. 처음에 격자의 모든 칸은 00입니다. 기계는 한 번에 직사각형 영역 하나를 골라 그 안의 모든 칸을 같은 색(00 또는 11)으로 덮어 칠합니다.

총 QQ번의 칠하기 연산을 순서대로 수행합니다(1≤Q≤10,0001 \le Q \le 10{,}000). ii번째 연산은 다섯 개의 정수 R1i,R2i,C1i,C2i,XiR1_i, R2_i, C1_i, C2_i, X_i로 주어지며 (1≤R1i≤R2i≤R1 \le R1_i \le R2_i \le R, 1≤C1i≤C2i≤C1 \le C1_i \le C2_i \le C, 0≤Xi≤10 \le X_i \le 1), 행 번호가 R1iR1_i 이상 R2iR2_i 이하이고 열 번호가 C1iC1_i 이상 C2iC2_i 이하인 모든 칸을 색 XiX_i로 칠한다는 뜻입니다.

각 연산을 수행한 직후, 현재 격자에서 목표 그림과 색이 일치하는 칸의 개수를 구하세요.

입력

  • 첫째 줄: 세 정수 RR, CC, QQ가 공백으로 구분되어 주어진다.
  • 다음 RR개의 줄: ii번째 줄에는 목표 그림의 ii번째 행을 나타내는 CC개의 문자('0' 또는 '1')가 공백 없이 주어진다.
  • 다음 QQ개의 줄: 각 줄에는 하나의 칠하기 연산을 나타내는 다섯 정수 R1iR1_i, R2iR2_i, C1iC1_i, C2iC2_i, XiX_i가 공백으로 구분되어 주어진다.

출력

  • 총 QQ개의 줄을 출력한다. ii번째 줄에는 ii번째 연산을 수행한 직후 목표 그림과 색이 일치하는 칸의 개수를 출력한다.

힌트

첫 번째 예제에서 첫 번째 연산을 수행하고 나면 격자는 다음과 같습니다.

000000000000000
000000000000000
000000000000000
000000000000000
011111111111110
011111111111110
011111111111110
011111111111110
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000

이때 목표 그림과 색이 일치하는 칸은 모두 113113개이며, 아래 그림에서 'x'로 표시했습니다(나머지 칸은 첫 번째 칠하기 이후의 실제 색으로 표시했습니다).

0000000x0000000
000000xxx000000
00000xxxxx00000
0000xxxxxxx0000
0xx111111111xx0
0xxx1111111xxx0
0xx111111111xx0
0x11111111111x0
000xxxxxxxxx000
00xxxxxxxxxxx00
0xxxxxxxxxxxxx0
00xxxxxxxxxxx00
0xxxxxxxxxxxxx0
xxxxxxxxxxxxxxx
000000xxx000000
000000xxx000000
000000xxx000000

예제1

  1. 예제 1

    입력
    17 15 10
    111111101111111
    111111000111111
    111110000011111
    111100000001111
    111000000000111
    111100000001111
    111000000000111
    110000000000011
    111000000000111
    110000000000011
    100000000000001
    110000000000011
    100000000000001
    000000000000000
    111111000111111
    111111000111111
    111111000111111
    5 8 2 14 1
    8 17 3 7 1
    4 5 10 15 0
    7 16 12 14 1
    2 17 13 14 0
    2 6 2 3 1
    13 14 4 8 1
    3 6 6 7 1
    1 16 10 11 0
    7 16 10 10 0
    
    예상 출력
    113
    94
    95
    91
    87
    93
    91
    87
    93
    93