Python 解答
n, m =map(int, input().split())
s =[0]+list(map(int, input().split()))
t =[0]+list(map(int, input().split()))
alive = list(map(int, input().split())) #目前存活人
mlose = [0]*(n+1) #紀錄每個人輸了幾次
while len(alive)>1:
winner, loser = [], []
for i in range(0, len(alive)-1, 2): #兩兩作戰,每次抓2個人
p1, p2 = alive[i], alive[i+1]
a, b, c, d = s[p1], t[p1], s[p2], t[p2]
if a*b >= c*d: #winner:p1
win, lose = p1, p2
s[win] += (c*d)//(2*b)
t[win] += (c*d)//(2*a)
s[lose] += c//2
t[lose] += d//2
else:
win, lose = p2, p1
s[win] += (a*b)//(2*d)
t[win] += (a*b)//(2*c)
s[lose] += a//2
t[lose] += b//2
winner.append(win)
mlose[lose] += 1
if mlose[lose] < m:
loser.append(lose)
if len(alive)%2 == 1:
winner.append(alive[-1])
alive = winner + loser
else:
print(alive[0])