만드는 중입니다

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

바나나 송이

면접 대비

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

요약
나무마다 바나나 송이 수가 주어질 때, 최대 두 개의 연속 구간을 골라 합이 정확히 K가 되는 최소 나무 수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
슬라이딩 윈도우, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

바바라는 앨런의 바나나 농장을 찾아간다. 농장에는 NN그루의 바나나 나무가 긴 한 줄로 늘어서 있으며, 이 줄을 배열 BB로 나타낸다. ii번째 위치의 나무에는 BiB_i송이의 바나나가 달려 있다. 모든 나무의 가격은 같다. 바라바가 나무 한 그루를 사면 그 나무에 달린 바나나 송이를 모두 얻는다. 앨런에게는 특별한 규칙이 있다. 줄에 빈틈이 많아지는 것을 원하지 않아서, 바라바는 나무 줄에서 최대 2개의 연속 구간만 살 수 있다. 바라바는 산 나무들에 달린 바나나 송이의 합이 바구니 용량 KK와 같아지기를 원한다. 돈은 가능한 한 적게 쓰려고 한다. 바라바는 몇 그루의 나무를 사야 하는가?

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 두 정수 NN(앨런 농장의 나무 개수)과 KK(바라바 바구니의 용량)가 주어진다.

다음 줄에는 음이 아닌 정수 B1,B2,…,BNB_1, B_2, \ldots, B_N이 주어진다. ii번째 정수는 ii번째 나무에 달린 바나나 송이의 개수다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. 여기서 xx는 테스트 케이스 번호(1부터 시작)이고, yy는 농장의 연속 구간을 최대 2개까지 사용해 바나나 송이를 정확히 KK개 얻기 위해 바라바가 사야 하는 나무의 최소 개수다. 불가능하면 -1을 출력한다.

제한

  • 1≤T≤1001 \le T \le 100.
  • 각 ii(1부터 NN까지)에 대해 0≤Bi≤K0 \le B_i \le K.

예제1

  1. 예제 1

    입력
    4
    6 8
    1 2 3 1 2 3
    4 10
    6 7 5 2
    6 8
    3 1 2 1 3 1
    4 6
    3 1 2 0
    
    예상 출력
    Case #1: 3
    Case #2: -1
    Case #3: 4
    Case #4: 3