C. 最短能量达标子段

最短能量达标子段

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目内容

定义一个正整数 xx 的"能量值"为:xx 中质因子 2 的个数,即 xx 能被 2 整除的次数(例如 8 = 2 × 2 × 2,其能量值为 36 = 2 × 3,其能量值为 1;奇数 5 的能量值为 0)。

给定一个长度为 nn 的正整数序列 aa 和一个目标能量值 kk。一个连续子序列的能量值等于其中所有元素能量值之和。

请找出一个连续子序列,使得它的能量值至少为 kk,并输出所有满足条件的连续子序列中长度最短的那个的长度。如果不存在这样的子序列,输出 -1

约束条件:nn 不超过 10510^5kk 不超过 10510^5,每个 aia_i 均为不超过 10910^9 的正整数。

输入描述

第一行包含两个正整数 nnkk1n1051 \le n \le 10^51k1051 \le k \le 10^5)。 第二行包含 nn 个正整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9)。

输出描述

输出一个整数,表示能量值至少为 kk 的连续子序列的最短长度。如果不存在,输出 -1

样例1

输入

4 4
6 10 14 18

输出

4

说明

各元素的能量值分别为:6 的质因子 2 个数为 1101141181,总和为 4

由于目标 k=4k = 4,需要取满全部 4 个元素才能达到能量值 4,因此最短长度为 4

样例2

输入

5 3
8 6 1 12 2

输出

1

说明

各元素的能量值分别为:8 的质因子 2 个数为 3611012221

单独取第一个元素 8,其能量值为 3 \ge k = 3,子序列长度为 1,已经达到目标,因此最短长度为 1

样例3

输入

3 10
4 16 5

输出

-1

说明

各元素的能量值分别为:4 的质因子 2 个数为 216450,总和为 6

由于 6<k=106 < k = 10,即使取全部 3 个元素也无法达到目标能量值,因此不存在合法子序列,输出 -1

秋招模拟赛第33场(会员专属)|2023.07.07-oppo提前批

Not Attended
Status
Done
Rule
IOI
Problem
3
Start at
2023-7-15 19:00
End at
2023-7-15 20:30
Duration
1.5 hour(s)
Host
Partic.
23