通过前缀和来记录演奏到第i个音符的总消耗,因为消耗是从0开始算,所以应该使用二分法查找刚好大于所查询节点的下标,又因为音符排列是从一开始算,所以将查找到的下标+1进行输出,即可完成一次查询
# 导入二分查找的bisect函数,该函数返回刚好大于某个数的下标
from bisect import bisect
# 进行数据的读取
n,q = map(int, input().split()) # n个音符,q次查询
b = list(map(int, input().split())) # 读取每一个音符的持续时间
ql = list(map(int, input().split())) # 读取查询的演奏节点
# 进行前缀和和初始化
font_add = [b[0]] # 第一个元素
for i in range(1,n): # 后面的元素
font_add.append(b[i] + font_add[i-1])
for i in ql:
print(bisect(font_add, i) + 1) # 打印要查找的第几个音符

京公网安备 11010502036488号