"""
题目描述:香槟塔的视觉效果是,如果这一层满了,会自动往下一层流。现在牛牛听妞妞指令,
一个指令是往第X层倒入体积为V的香槟,一个指令是询问第k层的香槟体积,请使用程序实现这两个指令
输入描述:第一行为两个整数n,m,表示香槟塔的总层数和指令条数
第二行是n个整数ai,表示每层香槟的容量
第三行到第2+m行表示指令,一种指令是"2 x v"表示往第x层倒入v,另一种是"1 k"表示询问第k层有多少香槟
输出描述:对于每个询问,输出一个整数表示第k层香槟的容量
样例:
输入:
1 2
8
2 1 9
1 1
输出:
8
"""
import sys
def step_ask(V, command):
idx_cur = command-1
print(V[idx_cur])
def step_add(V, command, V_max):
add_all = command[1]
idx_cur = command[0]-1
while True:
if add_all<=0 or idx_cur>=len(V):
break
if add_all <= V_max[idx_cur]-V[idx_cur]:
V[idx_cur] += add_all
add_all = 0
else:
add = V_max[idx_cur]-V[idx_cur]
V[idx_cur] = V_max[idx_cur]
add_all -= add
idx_cur += 1
def step(V, command, V_max):
if len(command)==2:
step_ask(V, command[1])
else:
step_add(V, command[1:3], V_max)
if __name__ == "__main__":
# 读取第一行的n
# n = int(sys.stdin.readline().strip())
line0 = sys.stdin.readline().strip()
layers_num, command_num = list(map(int, line0.split()))
line1 = sys.stdin.readline().strip()
init_V = list(map(int, line1.split()))
V_max = init_V.copy()
V_cur = [0]*len(V_max)
for idx in range(command_num):
line2 = sys.stdin.readline().strip()
command = list(map(int, line2.split()))
step(V_cur, command, V_max)
笔试编程题汇总
最新推荐文章于 2022-09-17 15:54:53 发布