그르다 김가놈

면접 대비

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

요약
N개의 김밥에서 양끝을 Kcm씩 잘라내고(길이가 2K 미만이면 한쪽만, K 이하면 버림), 다듬은 김밥을 길이 P로 잘라 M개 이상 얻는 최대 P를 구한다.
난이도

보통10점 중 6점

유형
이분 탐색, 배열, 수학, 구현
정답자
아직 제출이 없습니다

문제

정래는 김밥가게 "그르다 김가놈"에 납품할 김밥을 만드는 김밥 공장을 운영한다. 정래는 김밥 양쪽 끝을 "꼬다리"라고 부르고, 꼬다리를 잘라낸 김밥을 "손질된 김밥"이라고 부른다.

공장에서는 김밥 NN개에 대해 꼬다리를 잘라내고 손질된 김밥을 김밥조각으로 만드는 작업을 한다. 꼬다리를 잘라낼 때에는 양쪽에서 균일하게 KK cm만큼 잘라낸다. 김밥의 길이가 2K2K cm보다 짧아서 한쪽밖에 자르지 못한다면 한쪽만 꼬다리를 잘라낸다. 김밥 길이가 KK cm이거나 그보다 짧으면 그 김밥은 폐기한다.

손질된 김밥은 모두 일정한 길이 PP로 잘라 PP cm의 김밥조각으로 만든다. PP는 양의 정수여야 한다. 정래는 일정한 길이 PP cm로 자른 김밥조각을 최소 MM개 만들고 싶다. PP를 최대한 길게 하고 싶을 때, PP는 얼마로 설정해야 하는지 구하시오.

입력

첫 번째 줄에 손질해야 하는 김밥의 개수 NN, 꼬다리의 길이 KK, 김밥조각의 최소 개수 MM이 주어진다. (1≤N≤1061 \le N \le 10^6, 1≤K,M≤1091 \le K, M \le 10^9, NN, KK, MM은 정수)

두 번째 줄부터 김밥의 길이 LL이 NN개 주어진다. (1≤L≤1091 \le L \le 10^9, LL은 정수)

출력

김밥조각의 길이 PP를 최대로 할 때, PP를 출력한다. 만족하는 PP가 없는 경우, -1을 출력한다.

예제2

  1. 예제 1

    입력
    3 6 4
    20
    10
    3
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 8 1
    16
    7
    8
    
    예상 출력
    -1