만드는 중입니다

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

선분

시간 제한1.1초메모리 제한16 MB

요약
정수 좌표의 점 N개가 주어질 때, 서로 다른 선분 K개의 길이 합을 최소로 만드는 선분을 고르고 모든 최적해에 반드시 포함되는 점을 구합니다.
난이도

보통10점 중 7점

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

문제

Vlad은 종이 위에 점을 찍는 것을 아주 좋아합니다. 하루 종일 점을 찍었지만, 이제는 그중 일부를 직선으로 잇고 싶어 합니다. 점은 NN개이며, 00부터 N−1N-1까지 번호가 매겨져 있고, 모든 점의 좌표는 정수입니다. Vlad는 정확히 KK개의 서로 다른 선분을 그리려고 합니다. 각 선분의 양 끝점은 이미 그린 점들 가운데서 고릅니다. 또한 선분들의 길이 합, 즉 KK개 선분 길이의 총합을 최소로 만들고자 합니다.

최소 총 길이와 필수 점을 모두 구해 주세요. 점 PP가 필수 점이라는 것은, 총 길이가 최소가 되는 어떤 선택에서도 PP가 KK개 선분 중 적어도 하나의 끝점이 된다는 뜻입니다. 다시 말해 PP를 지우면 같은 최소 길이를 얻을 수 없습니다.

입력

첫 줄에 양의 정수 NN과 KK가 주어집니다. 이어지는 NN개의 줄에는 각 점의 좌표가 주어집니다. 좌표는 모두 정수입니다. 점은 00부터 N−1N-1까지 번호가 매겨져 있습니다.

출력

첫 줄에 최소 총 길이를 10−410^{-4} 이하의 오차로 출력하세요(소수점 넷째 자리까지 정확해야 합니다). 이어지는 줄에는 필수 점의 번호를 오름차순으로 출력하세요.

제한

  • 2≤N≤50002 \le N \le 5000
  • 1≤K≤N(N+1)/21 \le K \le N(N+1)/2
  • 1≤K≤1001 \le K \le 100
  • 모든 좌표는 [−109,109][-10^9, 10^9] 범위의 정수입니다.
  • 점의 좌표가 서로 다르다는 보장은 없습니다.
  • 한 점은 몇 개의 선분에든 끝점으로 쓰일 수 있습니다.

예제1

  1. 예제 1

    입력
    6 3
    1 2
    4 5
    2 3
    1 1
    8 8
    7 4
    
    예상 출력
    4.65028
    0
    2
    3