만드는 중입니다

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

탱그램

시간 제한8초메모리 제한512 MB

요약
가로, 세로, 대각선 방향의 변으로 이루어진 단순 다각형이 주어질 때, 칠교 조각 7개를 겹치지 않게 모두 사용해 채울 수 있는지 판별합니다.
난이도

어려움10점 중 8점

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

문제

당신의 예쁘고 사랑스러운 여동생 Chen이 탱그램 퍼즐을 한 시간째 붙잡고 있다가 도움을 청했다. 탱그램은 중국에서 유래한 퍼즐이다. 일곱 개의 조각을 모두 사용해 주어진 도형을 만드는 것이 목표다. 각 조각은 어디에든 놓을 수 있고, 회전하거나 뒤집을 수 있다. 단, 조각끼리 겹치면 안 된다.

일곱 조각은 다음과 같다.

  • 작은 직각삼각형 2개 (변의 길이 25225\sqrt{2}, 25225\sqrt{2}, 5050)
  • 중간 직각삼각형 1개 (변의 길이 5050, 5050, 50250\sqrt{2})
  • 큰 직각삼각형 2개 (변의 길이 50250\sqrt{2}, 50250\sqrt{2}, 100100)
  • 정사각형 1개 (한 변의 길이 25225\sqrt{2})
  • 평행사변형 1개 (변의 길이 25225\sqrt{2}, 5050)

다각형 PP의 모양이 주어질 때, 일곱 조각을 모두 사용해 PP를 만들 수 있는지 판별하라. 다음 조건을 가정해도 된다.

  • PP의 각 변은 xx축, yy축, 직선 y=xy = x, 직선 y=−xy = -x 중 하나와 평행하다.
  • PP는 연결되어 있고 구멍이 없다. 또한 PP는 단순 다각형이어서, 변이 서로 교차하거나 맞닿지 않는다.

입력

첫 줄에 PP의 꼭짓점 개수 NN (3≤N≤303 \le N \le 30)이 주어진다. 이어지는 NN개의 줄에는 PP의 꼭짓점이 시계 방향 순서로 주어진다. 각 줄에는 음이 아닌 정수 aa, bb, cc, dd가 공백으로 구분되어 있으며, 해당 꼭짓점의 위치는 (a+b2,c+d2)(a + b\sqrt{2}, c + d\sqrt{2})이다. 모든 좌표는 1000을 넘지 않는다.

출력

일곱 조각으로 PP를 만들 수 있으면 "Yes", 없으면 "No"를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    4
    0 0 0 0
    0 0 100 0
    100 0 100 0
    100 0 0 0
    
    예상 출력
    Yes
    
  2. 예제 2

    입력
    4
    0 50 0 0
    0 0 0 50
    0 50 0 100
    0 100 0 50
    
    예상 출력
    Yes