만드는 중입니다

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

잔인한 게임

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

요약
앨리스가 장애물 직선 위에 있지 않은 점을 고르고, 밥이 어디에 서든 앨리스와 밥 사이를 가리는 장애물 수의 최댓값을 최소로 만드는 문제입니다.
난이도

보통10점 중 7점

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

문제

알리스와 밥은 평면 위에서 잔인한 게임을 한다.

평면에 nn개의 장애물이 놓여 있고, 각 장애물은 선분이다. 먼저 알리스가 어떤 장애물을 포함하는 직선 위에도 있지 않은 점을 골라 그 자리에 선다. 다음으로 밥이 점을 골라 그 자리에 선다. 그다음 알리스가 밥을 향해 총을 쏜다.

밥은 안전하기를 원하므로, 자신과 알리스 사이에 가능한 한 많은 장애물이 놓이도록 점을 고른다. 장애물의 끝점이 알리스와 밥을 잇는 선분 위에 놓이면, 밥은 그 장애물 뒤에 숨은 것으로 본다.

알리스는 밥을 맞히고 싶으므로, 자신과 밥 사이에 가능한 한 적은 장애물이 놓이도록 점을 고른다. 그 점을 찾는 것을 도와라.

입력

첫 줄에 장애물의 개수 nn (1≤n≤81 \le n \le 8)이 주어진다. 다음 nn개의 줄에는 각 장애물 끝점의 좌표 x_1,y_1,x_2,y_2x\_1, y\_1, x\_2, y\_2가 정수로 주어진다. 장애물끼리는 공통된 점이 없다. 모든 좌표의 절댓값은 100을 넘지 않는다.

출력

첫 줄에 두 사람이 모두 최적으로 행동할 때 알리스와 밥 사이에 놓일 수 있는 장애물의 최소 개수 kk를 출력한다.

둘째 줄에는 알리스가 설 점을 출력한다. 이 점은 어떤 장애물을 포함하는 직선 위에 있으면 안 된다.

예제1

  1. 예제 1

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