만드는 중입니다

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

K는 다각형의 케이

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

요약
정수 좌표의 점 N개가 주어질 때, 모든 점을 내부나 경계에 포함하는 단순 다각형 중 둘레가 K번째로 짧은 값을 구합니다. 그런 다각형이 K개보다 적으면 -1을 출력합니다.
난이도

보통10점 중 4점

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

문제

「1번이어야만 하나요? K번이면 안 되는 걸까요?」

이것이 케이 씨의 좌우명이다. 요즘 케이 씨는 다각형에 푹 빠진 듯하다. 눈앞에 펼쳐진 넓은 2차원 평면 위의 NN개의 점을 보며, 이 점들로 다각형을 만드는 방법을 생각하고 있다.

케이 씨는 NN개의 점 중 일부를 골라 원하는 순서로 이어서, 고른 점을 꼭짓점으로 하는 다각형을 만들기로 했다. 다각형은 다음 조건을 만족해야 한다.

  • 단순 다각형이다. 즉, 꼭짓점이 3개 이상이고, 연속하지 않는 두 변은 어떤 것도 교점을 갖지 않는다.
  • 선택되지 않은 점을 포함해 NN개의 점 모두가 다각형의 내부 또는 둘레 위에 있다.

케이 씨가 원하는 것은 이러한 다각형 중 둘레, 즉 모든 변 길이의 합이 KK번째로 짧은 다각형이다.

당신의 일은 조건을 만족하는 다각형을 둘레의 오름차순으로 정렬했을 때 KK번째에 오는 다각형의 둘레를 구하는 프로그램을 작성하는 것이다. 그런 다각형이 KK개 이상 없을 수도 있는데, 그때는 −1-1을 출력한다.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 다음 형식으로 주어진다.

N K
x1 y1
...
xN yN

데이터셋의 첫 줄에는 점의 개수 NN과 구할 둘레의 순위 KK가 주어진다. NN, KK는 모두 정수이며, 3≤N≤253 \le N \le 25, 1≤K≤101 \le K \le 10이다. 이어지는 NN개의 줄에는 각 점의 좌표가 주어진다. ii번째 줄에는 ii번째 점의 x좌표 xix_i와 y좌표 yiy_i가 정수로 주어진다. 모든 1≤i≤N1 \le i \le N에 대해 −100≤xi,yi≤100-100 \le x_i, y_i \le 100이다.

서로 다른 세 점을 어떻게 골라도 그 세 점을 모두 지나는 직선은 없다고 가정해도 된다. 또 둘레의 오름차순으로 정렬했을 때 KK번째가 되는 조건 만족 다각형이 존재한다면, 그 다각형은 하나로 정해진다고 가정해도 된다.

입력의 끝은 0 0 두 개로만 이루어진 줄이다. 전체 데이터셋의 수는 50을 넘지 않는다.

출력

주어진 점들로 단순 다각형을 만들 때, 만들 수 있는 단순 다각형 중 둘레가 KK번째로 짧은 다각형의 둘레를 한 줄에 출력하라. 그런 다각형이 존재하지 않으면 −1-1을 출력하라. 결과의 오차는 10−410^{-4} 이상이면 안 된다.

예제1

  1. 예제 1

    입력
    5 2
    1 1
    1 4
    2 2
    3 1
    3 5
    3 1
    0 2
    1 0
    -1 0
    3 2
    0 2
    1 0
    -1 0
    9 10
    8 1
    9 19
    2 10
    1 1
    4 17
    7 13
    3 4
    6 13
    9 21
    0 0
    
    예상 출력
    11.812559200041266
    6.472135954999580
    -1
    52.202878812480016