만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

쿠키

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

요약
주어진 볼록 사각형을 넓이가 0이 아닌 사다리꼴 세 개로 나누어 겹치지 않고 전체를 덮는 방법을 구합니다.
난이도

보통10점 중 6점

유형
기하, 구현
정답자
아직 제출이 없습니다

문제

어린 루크는 매우 재능 있는 제다이다. 그는 사고를 치는 재주 말고도 물건에 손대지 않고 옮길 수 있다. 아쉽게도 텔레키네시스 수업은 제다이 학교 5학년부터 시작한다. 그래서 그는 아버지 서재에서 옛날 책 《꼬마를 위한 텔레키네시스》를 찾아냈다.

책의 첫 연습은 쿠키를 생각만으로 공중에서 옮기는 것이었다. 루크의 손에는 사각형 쿠키 한 묶음이 있었기에, 그는 자신의 능력을 시험해 보기로 했다. 책에 따르면 사각형 쿠키를 염력으로 옮기려면 먼저 정확히 세 개의 사다리꼴 조각으로 쪼개야 한다. 그다음 집중해서 힘을 쓴다.

루크가 쿠키를 쪼개서 정확히 세 조각이 생기도록 도와주자. 각 조각은 사다리꼴(두 변이 평행한 볼록 사각형)이어야 한다.

입력

입력 파일에는 쿠키인 사각형이 주어진다. 네 줄에 사각형 꼭짓점의 좌표가 반시계 방향 순서로 주어진다. i번째 줄에는 두 수 x_i와 y_i가 주어지며, 이는 i번째 꼭짓점의 좌표다.

어느 세 점도 한 직선 위에 놓이지 않는다.

모든 좌표의 절댓값은 1000010000 이하다.

출력

출력 파일에 사다리꼴 세 개를 출력한다. 각 사다리꼴은 네 줄로 나타내며, 각 줄에는 실수 두 개 x_i와 y_i를 쓴다. 이는 사다리꼴의 i번째 꼭짓점 좌표이며, 반시계 방향 순서로 적는다. 사다리꼴의 넓이는 0이 아니어야 한다. 각 사다리꼴 설명 뒤에는 빈 줄을 출력한다.

사다리꼴의 모든 점은 원래 사각형의 내부나 경계 위에 있어야 한다. 사다리꼴끼리는 0이 아닌 넓이로 겹치면 안 되며, 원래 사각형의 모든 점은 세 사다리꼴 중 적어도 하나에 덮여야 한다.

답이 여러 개면 아무거나 출력해도 된다. 검사할 때 두 넓이는 상대 오차나 절대 오차가 10−510^{-5} 이하이면 같다고 본다. 점이 직선 위에 있다는 것은 점에서 직선까지의 거리가 10−810^{-8} 이하라는 뜻이다. 두 직선이 평행하다는 것은 사이 각의 사인 값이 10−710^{-7} 이하라는 뜻이다.

힌트

만들어진 사다리꼴은 두 쌍의 대변이 모두 서로 평행할 수도 있다. 이런 경우는 첫 번째 예제에서 볼 수 있다.

두 번째 예제는 다음 그림과 같다.

예제2

  1. 예제 1

    입력
    0 0
    2 0
    2 2
    0 2
    
    예상 출력
    0 0
    1 0
    1 1
    0 1
    
    1 0
    2 0
    2 1
    1 1
    
    0 1
    2 1
    2 2
    0 2
    
  2. 예제 2

    입력
    0 0
    20 20
    0 10
    -20 20
    
    예상 출력
    0 0
    11 11
    3 7
    -2 2
    
    3 7
    11 11
    20 20
    0 10
    
    -2 2
    3 7
    0 10
    -20 20