아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

감자

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

요약
볼록 다각형을 직선으로 최대 k번 잘라 한쪽 조각을 버릴 때, 원래 껍질의 모든 점을 제거하면서 남길 수 있는 최대 넓이를 구한다.
난이도

보통10점 중 7점

유형
기하, 동적 계획법, 이분 탐색, 구현
정답자
아직 제출이 없습니다

문제

마르친이 감자의 껍질을 벗기고 있다. 문제를 간단하게 하기 위해, 감자는 볼록 다각형이라고 가정하고 그 경계선을 껍질이라고 부른다. (볼록 다각형은 모든 내각이 180∘180^\circ보다 작은 다각형이다.)

마르친은 직선으로 자르기를 반복해 껍질을 벗긴다. 한 번 자를 때마다 직선 하나를 골라 그 선을 따라 자른 뒤, 나뉜 두 조각 중 하나를 버린다. 자른 직선 위에 놓인 점도 모두 버려지므로, 껍질의 한 변을 포함하는 직선을 따라 자르면 그 변은 벗겨진다.

감자가 원래 껍질의 점을 하나도 포함하지 않게 되면 껍질이 완전히 벗겨졌다고 본다. 마르친은 되도록 적게 일하고 싶어서 자르는 횟수를 제한하지만, 그러면서도 벗긴 감자를 가능한 한 크게 남기고 싶어 한다. 감자의 모양이 주어질 때, 최대 kk번 자를 수 있다면 벗긴 감자의 넓이는 최대 얼마인가?

프로그램은 다음을 수행해야 한다.

  • 표준 입력에서 감자에 대한 정보를 읽는다,
  • 최대 kk번 자를 수 있을 때 벗긴 감자의 가능한 가장 큰 넓이를 구한다,
  • 그 결과를 표준 출력에 쓴다.

입력

첫째 줄에 정수 nn과 kk가 공백 하나로 구분되어 주어진다 (3≤n≤1003 \le n \le 100, 3≤k≤n3 \le k \le n). nn은 감자를 나타내는 볼록 다각형의 꼭짓점 개수이고, kk는 마르친이 자를 수 있는 최대 횟수이다. 다음 nn개의 줄에는 각각 꼭짓점의 좌표를 나타내는 두 정수 xx와 yy가 주어진다 (−10 000≤x,y≤10 000-10\,000 \le x, y \le 10\,000). 꼭짓점은 다각형을 따라 시계 방향 또는 반시계 방향 순서로 주어진다.

출력

최대 kk번 자를 수 있을 때 얻을 수 있는 벗긴 감자의 가장 큰 넓이를 소수점 아래 한 자리까지 실수 하나로 출력한다. 이 값을 반올림하지 않는다. 소수점 아래 둘째 자리부터는 정답 판정에 영향을 주지 않는다.

힌트

위 그림은 감자를 33번 잘라 가장 크게 벗기는 방법을 보여 준다.

예제1

  1. 예제 1

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