#6495. C:Bit 去哪了? (Where did Bit go?)
C:Bit 去哪了? (Where did Bit go?)
题目 C:Bit 去哪了? (Where did Bit go?)
| 项目 | 限制条件 |
|---|---|
| 输入文件 | 标准输入 (standard input) |
| 输出文件 | 标准输出 (standard output) |
| 时间限制 | C++: 2秒, Pascal: 2秒, Java: 4秒, Python: 20秒 |
| 内存限制 | 256 MB |
| 总分 | 100 分 |
题目背景
在发现他最喜欢的树今天早晨“跑步”的方式有些古怪后,Bit 神秘地失踪了。你怀疑这件事背后有秘密势力的影子,于是接管了“轨道指挥中心”,利用其扫描功能试图定位 Bit。
题目描述
你需要扫描的区域是一条由 个区块组成的土地,从左到右排列。第一个区块的位置为 ,最后一个区块的位置为 。
轨道指挥中心每次最多可以扫描 个区块。由于轨道围绕地球运行,扫描的位置每经过一个时间步就会向右移动。 具体来说,给定 个不同的整数 。在时间 ,只有当存在索引 使得 时,位置 上的区块才会被扫描。
外部情报提供了关于 Bit 可能出现的优先位置:
- 每个区块都被分配了一个唯一的整数优先级(范围从 到 )。
- 优先级越小,优先级越高( 是最高优先级, 是最低优先级)。
- 出于机密原因,所有区块的优先级是随机排列的。你可以假设每个区块的优先级是从前 个正整数中随机抽样生成的排列。
你的任务:
编写一个程序上传到轨道指挥中心。在每个时间步,输出当前正在被扫描的区块中,优先级最高的区块的位置(Position)。如果该时间步没有任何有效区块被扫描,则输出 -1。
输入格式
- 第一行包含两个整数 。
- 第二行包含 个整数,第 个数()表示位置 处区块的优先级。
- 第三行包含 个整数 。
保证: ,,且 。
输出格式
在一行内输出 个空格分隔的整数。
第 个整数应为时间 (从 开始)时,被扫描的最高优先级区块的位置。若无区块被扫描,输出 -1。
评分标准与子任务
| 子任务 | 分数 | 限制条件 |
|---|---|---|
| 1 | 20 | |
| 2 | ||
| 3 | ,且对于所有 ,满足 (扫描区域连续) | |
| 4 | 40 | (无特殊限制) |
样例
输入 (standard input)
4 3
1 4 2 3
-1 0 2
输出 (standard output)
2 1 1 3 3 4
样例说明(Note)
在第一个例子中,,优先级数组为 [1, 4, 2, 3](位置 1 到 4)。
扫描基准偏移量 。
| 时间 | 扫描位置 () | 有效区块的优先级 | 最高优先级 | 对应位置 |
|---|---|---|---|---|
| 0 | -1, 0, 2 | 优先级(2) = 4 | 4 | 2 |
| 1 | 0, 1, 3 | 优先级(1)=1, 优先级(3)=2 | 1 | |
| 2 | 1, 2, 4 | 优先级(1)=1, 优先级(2)=4, 优先级(4)=3 | ||
| 3 | 2, 3, 5 | 优先级(2)=4, 优先级(3)=2 | 2 | 3 |
| 4 | 3, 4, 6 | 优先级(3)=2, 优先级(4)=3 | ||
| 5 | 4, 5, 7 | 优先级(4)=3 | 3 | 4 |
输出结果为:2 1 1 3 3 4。