만드는 중입니다

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

너무 볼록하지 않은 껍질

시간 제한1초메모리 제한128 MB

요약
원점 못을 공통으로 공유하는 B개의 볼록 다각형 그룹으로 못을 나누어 덮인 넓이의 합이 최소가 되도록 하는 값을 구한다.
난이도

어려움10점 중 9점

유형
동적 계획법, 기하, 정렬, 분할 정복
정답자
아직 제출이 없습니다

문제

못과 고무줄. 기하 선생님들의 자녀로만 이루어진 한 무리의 아이들이 즐기는 놀이의, 그 이름다운 이름입니다. 아이들은 나무판 위에 못 여러 개를 아무 위치에나 박습니다. 그런 다음 못 하나를 원점(Origin) 으로 정하고, 고무줄 BB개를 준비합니다. 목표는 이 BB개의 고무줄로 못들을 감싸되 다음 조건을 모두 만족시키는 것입니다.

  1. 각 고무줄은 못들의 부분집합을 감싼다.
  2. 모든 못은 어떤 감싸기(wrapping) 안에 들어 있어야 한다.
  3. 감싸기들은 서로 겹치지 않는다. 단, 모든 고무줄이 함께 닿는 원점 못에서만은 예외이다.
  4. 각 고무줄이 이루는 감싸기는 꼭짓점이 최소 세 개인 볼록 다각형이어야 한다.
  5. 감싸기들이 덮는 전체 넓이가, 못을 감싸는 가능한 모든 방법 중에서 최소여야 한다.

그림 1은 이 게임의 한 예시를 보여 줍니다.

그림 1

그림 1: 못 19개와 고무줄 2개로 이루어진 게임

입력

프로그램은 여러 개의 게임을 처리해야 합니다. 각 게임 설명은 두 정수 BB와 NN이 담긴 줄로 시작합니다. 각각 고무줄의 개수와 못의 개수를 뜻하며, 2≤B≤502 \le B \le 50이고 2B+1≤N≤1012B+1 \le N \le 101입니다. 이어지는 NN개의 줄은 못의 위치를 나타내며, 각 줄에 두 정수 XX와 YY가 있습니다(−10000≤X,Y≤10000-10000 \le X, Y \le 10000). 원점은 입력의 첫 번째 못입니다. 입력의 끝은 B=N=0B = N = 0으로 표시됩니다.

입력의 모든 게임에서 다음이 성립합니다.

  • 같은 위치에 있는 두 못은 없다.
  • 한 직선 위에 있는 세 못은 없다.
  • 원점 못은 전체 못들의 볼록 껍질에 속하지 않는다. 즉, 고무줄 하나로 모든 못을 감싸면 그 고무줄은 원점 못에 닿지 않으며, 원점은 볼록 껍질의 내부에 있다.

출력

각 게임마다, 감싸기들이 덮는 최소 전체 넓이를 한 줄에 출력합니다. 넓이는 소수점 아래 두 자리까지의 실수로 출력하며, 마지막 자리는 반올림합니다. 반올림 차이가 결과에 영향을 주는 입력은 주어지지 않습니다.

예제3

  1. 예제 1

    입력
    2 5
    0 0
    9 4
    -8 8
    -10 -2
    4 -8
    2 6
    0 0
    3 6
    -5 7
    -4 -6
    10 -10
    3 5
    0 0
    
    예상 출력
    92.00
    74.00
    
  2. 예제 2

    입력
    2 5
    0 0
    9 17
    14 -24
    8 11
    -15 -13
    0 0
    
    예상 출력
    242.00
    
  3. 예제 3

    입력
    2 6
    0 0
    15 14
    -12 15
    12 -17
    -9 -4
    -4 15
    0 0
    
    예상 출력
    301.00