CF949B A Leapfrog in the Array

本文介绍了一种关于数组操作的独特算法题目。此算法要求在特定条件下移动数组中的元素,直至达到预期状态。文章详细解释了算法流程及示例,帮助读者理解如何解答此类题目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:

Dima是一名初级程序员。 在他的工作中,他经常不断地重复以下操作:从数组中删除每个第二个元素。 有一天,他对这个问题的解决方案感到厌倦,他提出了以下华丽的算法。
假设有一长度为2n的数组,最初的数组包含从1到n的n个数字,数字i位于序号为2i - 1的单元格中(序号从1开始编号),并且数组的其他单元格为空。每个步骤你需要选择一个最大序号的非空单元格,并将其中的数字移动到它左边最近的空单元格。一直循环该过程,直到所有n个数字出现在数组的前n个单元格中。例如,如果n = 4,则数组更改如下:
这里写图片描述
您必须编写一个程序,输出在该算法完成后,序号为x(1≤x≤n)的单元格中的数字。

输入格式:

第一行包含两个整数n和q(1≤n≤1e18,1≤q≤200 000),数组中元素的数量以及查询数量。
接下来的q行包含一个整数xi(1≤xi≤n),xi为算法完成后,第xi个单元格。

输出格式:

对于q个查询中的每一个,输出一个整数,即相应数组单元格中的值。

样例:

inputCopy
4 3
2
3
4
outputCopy
3
2
4
inputCopy
13 4
10
5
4
8
outputCopy
13
3
8
9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值