아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

격자 패널

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

요약
구멍이 있는 격자 패널에서 구멍에 닿은 모든 칸과 한 행이나 한 열을 함께 덮는 가장 작은 직교 볼록 영역의 넓이를 구합니다.
난이도

어려움10점 중 8점

유형
기하, 완전 탐색
정답자
아직 제출이 없습니다

문제

한 공장에서 격자 패널을 생산한다. 갓 만든 패널에 결함이 생길 때가 있는데, 결함은 패널의 격자점에 뚫린 구멍이다. 작업자들은 결함이 있는 패널을 모두 모아, 구멍이 포함된 부분을 잘라 내고 그 자리를 결함 없는 패널 조각으로 교체한다. 절단은 반드시 격자선을 따라야 하며, 각 구멍에 인접한 모든 격자 칸을 포함하는 하나의 연결된 영역을 제거한다. 이 연결된 영역은 다음 조건을 모두 만족해야 한다.

  • (i) 각 구멍에 인접한 모든 격자 칸을 포함한다.
  • (ii) 기준 절단 띠로 선택한 패널의 한 행 또는 한 열에 속하는 모든 격자 칸을 포함한다.
  • (iii) 직교 볼록 다각형이다.
  • (iv) (i), (ii), (iii)을 만족하는 모든 직교 다각형 중에서 넓이가 최소이다.

경계가 수평 또는 수직 선분으로만 이루어진 다각형을 직교 다각형이라 한다. 직교 다각형이면서, 임의의 수평선 및 수직선과의 교집합이 공집합이거나 하나의 선분인 경우 그 다각형을 직교 볼록 다각형이라 한다.

예를 들어 그림 1(a)의 구멍이 66개 있는 8×78 \times 7 패널을 생각하자. 아래에서 네 번째 행을 기준 절단 띠로 선택하면 제거되는 연결 영역은 격자 칸 2929개를 갖는다(그림 1(b)). 대신 왼쪽에서 네 번째 열을 선택하면 제거되는 연결 영역은 격자 칸 2727개를 가지며(그림 1(c)), 이것이 가능한 가장 작은 직교 볼록 다각형이다.

그림 1

패널의 크기와 구멍의 위치가 주어질 때, 위 조건을 만족하는 가장 작은 직교 볼록 다각형을 구하는 프로그램을 작성하라. 각 격자 칸의 넓이는 11이므로, 그림 1(c)의 직교 볼록 다각형의 넓이는 2727이다.

입력

입력은 표준 입력으로 주어진다. 첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.

각 테스트 케이스의 첫째 줄에는 패널의 너비와 높이를 나타내는 두 정수 ww와 hh가 주어진다(2≤w,h≤500002 \le w, h \le 50000). 다음 줄에는 구멍의 개수 nn이 주어진다(1≤n≤10001 \le n \le 1000). 이어지는 nn개의 줄에는 각 구멍의 좌표를 나타내는 두 정수 xx와 yy가 주어진다(0≤x≤w0 \le x \le w, 0≤y≤h0 \le y \le h). 패널의 왼쪽 아래 모서리가 좌표계의 원점이다. 같은 줄의 정수들은 하나의 공백으로 구분된다.

출력

출력은 표준 출력으로 한다. 각 테스트 케이스마다, 패널의 모든 구멍을 최소로 덮는 직교 볼록 다각형의 넓이를 정수 하나로 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    1
    8 7
    6
    2 2
    3 1
    8 3
    5 5
    4 6
    3 4
    
    예상 출력
    27
    
  2. 예제 2

    입력
    3
    4 4
    1
    2 2
    8 7
    6
    2 2
    3 1
    8 3
    5 5
    4 6
    3 4
    12 10
    15
    2 7
    3 8
    4 6
    4 7
    5 5
    5 7
    6 4
    6 5
    7 3
    7 5
    8 2
    8 3
    9 4
    9 5
    10 3
    
    예상 출력
    6
    27
    44
    
  3. 예제 3

    입력
    1
    4 4
    1
    2 2
    
    예상 출력
    6
    
  4. 예제 4

    입력
    1
    5 5
    1
    0 0
    
    예상 출력
    5