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

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

최대한의 휴식

면접 대비

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

요약
각 날의 작업량 상한 W_i 안에서 근무일을 골라 총 작업량을 M 이상으로 채우고, 근무일 사이 휴식 길이의 최솟값을 최대화합니다.
난이도

보통10점 중 6점

유형
이분 탐색, 동적 계획법, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

Amel은 SKH 회사에서 일을 잘하기로 소문난 유능한 사원이다. 그러나 체력이 매우 약한 Amel은 하루 일하고 나면 금방 지쳐서, 한 번 일한 뒤에는 가능한 한 오래 쉬고 싶어 한다. Amel은 ii번째 날에 최대 WiW_i만큼 일할 수 있고, 총 MM만큼의 일을 해야 한다. Amel은 출근한 날들 사이에서 일하지 않고 연속으로 쉬는 기간의 최솟값을 최대화하려고 한다.

예를 들어 7일 동안의 할당량이 각각 1, 3, 5, 4, 3, 7, 31,\ 3,\ 5,\ 4,\ 3,\ 7,\ 3이고 Amel에게 주어진 할당량이 99라고 하자. 첫 번째, 세 번째, 일곱 번째 날에 일하면 1+5+3=91+5+3=9가 되어 할당량을 채울 수 있다. 이때 연속으로 쉬는 날은 각각 1일과 3일이고, 이 중 최솟값은 1일이다. 두 번째와 여섯 번째 날을 고르면 3+7=103+7=10으로 할당량을 채울 수 있고, 연속으로 쉬는 날은 3일이므로 최솟값은 3일이다. 여섯 번째 날과 일곱 번째 날을 고르면 출근한 날 사이의 간격이 0일이므로 최솟값은 0일이다.

첫 출근일 이전의 휴식이나 마지막 출근일 이후의 휴식은 연휴에 포함하지 않는다.

입력

첫 줄에 Amel이 일할 수 있는 날짜의 수 NN(2≤N≤2×1052 \leq N \leq 2 \times 10^5)과 할당량 MM(1≤M≤1081 \leq M \leq 10^8)이 공백으로 구분되어 주어진다.

둘째 줄에는 ii번째 날에 할 수 있는 일의 양 WiW_i(1≤i≤N1 \leq i \leq N, 1≤Wi≤1071 \leq W_i \leq 10^7)가 공백으로 구분되어 주어진다.

입력되는 모든 수는 정수이다.

출력

연속으로 쉴 수 있는 기간의 최솟값이 가질 수 있는 최댓값을 출력한다.

NN일 모두 출근해도 할당량을 채울 수 없으면 -1을 출력하고, 하루 만에 할당량을 채울 수 있으면 "Free!"(따옴표 제외)를 출력한다.

예제4

  1. 예제 1

    입력
    7 9
    1 3 5 4 3 7 3
    
    예상 출력
    3
    
  2. 예제 2

    입력
    5 5
    1 2 3 4 5
    
    예상 출력
    Free!
    
  3. 예제 3

    입력
    5 20
    1 2 3 4 5
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    11 20
    1 5 2 8 4 7 2 9 8 2 8
    
    예상 출력
    3