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

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

벽 장식하기

면접 대비

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

요약
벽에 겹치지 않고 놓인 직사각형들이 주어질 때, 새 w' x h' 직사각형이 기존 그림과 겹치지 않으면서 놓일 수 있는 가장 낮고 가장 왼쪽인 위치를 찾고, 불가능하면 Fail!을 출력한다.
난이도

보통10점 중 6점

유형
기하, 정렬, 이분 탐색, 구간
정답자
아직 제출이 없습니다

문제

부자 씨는 거대한 저택을 막 완공했지만, 텅 빈 실내 벽이 영 마음에 들지 않는다. 그래서 소장하고 있는 그림들을 벽에 걸기로 했는데, 이미 걸린 그림들과 겹치지 않으면서 새 그림을 걸 자리를 찾기가 점점 어려워졌다.

이미 벽에 걸린 그림들이 주어졌을 때, 기존 그림을 전혀 옮기지 않고 다음 그림을 걸 수 있는 위치를 찾는 프로그램을 작성하라. 걸 수 없다면 불가능하다고 알려야 한다.

모든 그림은 벽의 변과 평행한 직사각형이며, 회전시킬 수 없다.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다.

각 테스트 케이스의 첫 줄에는 세 정수 nn, ww, hh가 주어진다. nn은 이미 벽에 걸린 그림의 수, ww는 벽의 너비, hh는 벽의 높이이다.

이어지는 nn개의 줄에는 각각 네 정수 x1 y1 x2 y2x_1\ y_1\ x_2\ y_2가 주어지며 0≤x1<x2≤w0 \le x_1 < x_2 \le w, 0≤y1<y2≤h0 \le y_1 < y_2 \le h를 만족한다. xx좌표는 벽의 왼쪽 끝에서의 거리, yy좌표는 벽의 아래쪽 끝에서의 거리이다. (x1,y1)(x_1, y_1)은 그림의 왼쪽 아래 꼭짓점, (x2,y2)(x_2, y_2)는 오른쪽 위 꼭짓점이다.

각 테스트 케이스의 마지막 줄에는 새로 걸 그림의 크기가 주어진다. 너비 w′w', 높이 h′h' 순서이며 1≤w′≤w1 \le w' \le w, 1≤h′≤h1 \le h' \le h이다. 그림은 회전시킬 수 없다.

0≤n≤2000 \le n \le 200, 1≤w,h≤10000001 \le w, h \le 1000000이라고 가정해도 된다. 이미 걸려 있는 그림들은 서로 겹치지 않는다.

출력

각 테스트 케이스마다 한 줄을 출력한다.

새 그림을 기존 그림과 겹치지 않게 놓을 수 있는 빈 자리가 없으면 Fail!을 출력한다.

그렇지 않으면 그림의 왼쪽 아래 꼭짓점을 놓을 좌표를 두 정수 x y로, 공백 하나로 구분하여 출력한다. 변이나 꼭짓점만 맞닿는 두 그림은 겹치는 것으로 보지 않는다. 놓을 수 있는 위치가 여러 개라면 yy가 가장 작은 것을 고르고, 그런 위치가 여러 개면 xx가 가장 작은 것을 고른다.

예제2

  1. 예제 1

    입력
    2
    1 10 9
    5 4 10 9
    9 5
    2 10 10
    5 5 10 10
    0 0 4 3
    3 4
    
    예상 출력
    Fail!
    4 0
    
  2. 예제 2

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