在一座名为“星环”的巨大环形空间站上,资源仓呈线性排列,首尾相连。 现需要为一艘抵达的货运船,请求一段连续的空闲资源仓用于停靠。 星环的状态由一个十进制 `byte` 序列描述。 序列中的每个数字代表一个“监控单元”,对应着 个连续的资源仓。 该数字的二进制表示中的每一位 (`bit`) 描述了一个资源仓的状态:`1` 代表“空闲”,`0` 代表“已被占用”。 为便于管理,所有资源仓从 开始统一编号。 若监控单元序列共有 个数字,则第一个数字的 `bit 0` 到 `bit 7` 对应 号资源仓,第二个数字对应 号,以此类推。 第 个数字对应 号资源仓。 号和 号资源仓在物理上是相邻的,共同构成了星环的闭环。 货运船当前停靠在 号资源仓附近,需要从此位置之后(顺时针方向)寻找一片长度为 的连续空闲资源仓。分配时需遵循以下优先级规则: 1. 搜索顺序 :从 号资源仓开始,按编号递增方向()进行搜索。若未找到,则回到星环起点,继续搜索 区间。 2. 最优匹配 (Best-Fit) :如果找到多个满足长度要求的连续空闲仓段,优先选择长度最接近 的仓段。 3. 最近原则 (Nearest-First) :在所有“最优匹配”的仓段中,选择起始编号离 **距离最近**的一个。 4. 距离计算 :设候选仓段的起始编号为 ,总仓位数为 。 - 若 m" ,距离为 。 - 若 ,距离为 。(计算回环距离)
输入描述:
输入为一个数字序列,包含两部分:1. 第一行 :包含两个整数,分别为: :请求的连续资源仓数量,范围 。 :当前停靠的资源仓编号,范围 。2. 第二行及之后 :描述星环状态的 `byte` 序列(最多 个数字),数字之间由空格或换行符分隔,每个数字的范围是 。


输出描述:
输出一个整数,表示最终分配的资源仓段的 起始编号 。如果无法找到满足条件的资源仓段,则输出 -1 。
示例1

输入

3 6
59 143

输出

15
示例2

输入

3 1
0 0

输出

-1
示例3

输入

3 1
61 7

输出

8
示例4

输入

2 1
0 254

输出

9

备注:
本题由牛友@Charles 整理上传
加载中...