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

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

합이 X 이상인 가장 짧은 연속 부분 수열

시간 제한3초메모리 제한256 MB

요약
합이 X 이상인 가장 짧은 연속 부분수열의 길이를 구하고 없으면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
누적 합, 큐
정답자
아직 제출이 없습니다

문제

길이가 NN인 정수 수열 A1,A2,…,ANA_1, A_2, \dots, A_N과 정수 XX가 주어진다.

연속한 원소로 이루어진 부분 수열 Ai,Ai+1,…,AjA_i, A_{i+1}, \dots, A_j (1≤i≤j≤N1 \le i \le j \le N) 가운데 원소의 합이 XX 이상인 것을 생각한다. 그중에서 길이가 가장 짧은 부분 수열의 길이를 구하는 프로그램을 작성하시오. 부분 수열은 원소를 적어도 하나 포함한다.

입력

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

각 테스트 케이스의 첫째 줄에 NN (1≤N≤500,0001 \le N \le 500{,}000)과 XX (−109≤X≤109-10^9 \le X \le 10^9)가 주어진다. 둘째 줄에 수열의 원소 NN개가 공백으로 구분되어 주어진다. 각 원소는 −109-10^9 이상 10910^9 이하의 정수다.

출력

각 테스트 케이스마다 합이 XX 이상인 연속 부분 수열 중 가장 짧은 길이를 한 줄에 출력한다. 그러한 부분 수열이 없으면 −1-1을 출력한다.

예제1

  1. 예제 1

    입력
    3
    5 4
    1 2 1 2 1
    6 -2
    -5 -6 -7 -8 -9 -10
    5 3
    -1 1 1 1 -1
    
    예상 출력
    3
    -1
    3