"""
題目描述:香檳塔的視覺效果是,如果這一層滿了,會自動往下一層流。現在牛牛聽妞妞指令,
一個指令是往第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)
筆試編程題彙總
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.