영역 구하기

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

요약
격자판에서 여러 사각형으로 막힌 칸을 제외한 연결된 빈 영역의 개수와 각 영역의 넓이를 오름차순으로 출력하는 문제입니다.
난이도

보통10점 중 4점

유형
BFS, 배열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

격자 간격이 1인 세로 M, 가로 N 크기의 모눈종이가 있다. 이 모눈종이에 격자선에 맞추어 K개의 직사각형을 그리면, 직사각형들이 덮은 내부를 제외한 나머지 칸들이 여러 개의 분리된 영역으로 나뉜다.

직사각형의 왼쪽 아래 꼭짓점이 (x1, y1), 오른쪽 위 꼭짓점이 (x2, y2)라면, x1 <= x < x2 이고 y1 <= y < y2 인 단위 칸들이 그 직사각형의 내부에 포함된다. 남은 칸들은 변을 공유할 때 같은 영역에 속한다.

M, N, K와 K개의 직사각형 좌표가 주어질 때, 직사각형 내부를 제외한 부분이 몇 개의 영역으로 나뉘는지와 각 영역의 넓이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 M, N, K가 공백으로 구분되어 주어진다. M, N, K는 모두 100 이하의 자연수이다.

다음 K개의 줄에는 각 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표와 오른쪽 위 꼭짓점의 x, y좌표가 공백으로 구분되어 주어진다. 모눈종이의 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (N, M)이다. 입력되는 직사각형들이 모눈종이 전체를 덮는 경우는 없다.

출력

첫째 줄에 분리된 영역의 개수를 출력한다.

둘째 줄에는 각 영역의 넓이를 오름차순으로 정렬하여 공백으로 구분해 출력한다.

예제1

  1. 예제 1

    입력
    5 7 3
    0 2 4 4
    1 1 2 5
    4 0 6 2
    
    예상 출력
    3
    1 7 13