행복한 지렁이

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

요약
돌이 놓인 격자에서 길이가 2 이상인 가로 및 세로 빈 칸 연속 구간의 개수를 센다.
난이도

보통10점 중 4점

유형
정렬, 구현, 배열, 해시맵
정답자
아직 제출이 없습니다

문제

행복한 지렁이가 m×nm \times n 크기의 직사각형 밭에 산다. 밭의 일부 칸에는 돌이 하나씩 놓여 있고, 나머지 칸은 비어 있다(각 칸은 비어 있거나 돌을 하나 가진다).

지렁이는 잠을 잘 때 한 줄로 곧게 눕는다. 한 행을 따라 가로로 눕거나, 한 열을 따라 세로로 눕는다. 그리고 몸을 최대한 늘여서, 누운 자리에서 양쪽 방향으로 돌이나 밭의 경계에 막힐 때까지 뻗는다. 지렁이는 돌이 있는 칸이나 밭 바깥의 칸을 차지할 수 없으며, 잠자는 동안 길이는 항상 22칸 이상이어야 한다.

따라서 하나의 자세는, 한 행 또는 한 열에서 길이가 22 이상인 '극대(더 이상 늘일 수 없는) 빈 칸 구간'에 해당한다. 두 자세가 서로 다른 칸들의 집합을 덮으면 서로 다른 자세로 센다. 가로 구간과 세로 구간은 언제나 서로 다른 자세이다.

지렁이가 잠자면서 취할 수 있는 서로 다른 자세의 개수를 구하여라.

입력

첫째 줄에 테스트 케이스의 개수 tt (1≤t≤111 \le t \le 11)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

각 테스트 케이스의 첫째 줄에는 세 정수 mm, nn, kk (1≤m,n,k≤1000001 \le m, n, k \le 100000)가 주어지며, 각각 행의 수, 열의 수, 돌의 수이다. 이어지는 kk개의 줄에는 각각 돌 하나의 행 rr과 열 cc를 나타내는 두 정수가 주어진다 (1≤r≤m1 \le r \le m, 1≤c≤n1 \le c \le n). 같은 돌이 두 번 주어지는 경우는 없다.

출력

각 테스트 케이스마다, 행복한 지렁이가 취할 수 있는 서로 다른 자세의 개수를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    1
    5 5 6
    1 5
    2 3
    2 4
    4 2 
    4 3
    5 1
    
    예상 출력
    9