https://www.acmicpc.net/problem/1806
const sum = A.reduce((a, b) => a + b, 0)
let O = 0
if (sum >= S) {
let [l, r] = [1, N]
while (l < r) {
const m = Math.floor((l + r) / 2)
let sSum = 0
for (let i = 0; i < m; i++) sSum += A[i]
let max = sSum
for (let i = m; i < N; i++) {
sSum += A[i] - A[i - m]
if (sSum > max) max = sSum
} // 부분합의 최댓값 max를 구함
max < S ? (l = m + 1) : (r = m)
}
O = r
}
console.log(O)
const I = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
const [[N, S], A] = [I[0].split(' ').map(Number), I[1].split(' ').map(Number)]
let l = (r = 0)
let [sum, O] = [A[0], N + 1]
while (sum) {
if (sum < S) sum += A[++r]
else {
O = Math.min(O, r - l + 1)
sum -= A[l++]
}
} // r이 범위를 벗어나 sum이 NaN이 될 때까지 반복
if (O == N + 1) O = 0
console.log(O)