def get_input():
n = int(input())
values = [int(i) for i in input().split()]
return n, values
def main():
n, values = get_input()
if n < 1 or n > 100:
return
values.insert(0, 0)
count = 0
for i in range(1, n+1):
if 2*i+1 > n:
break
while values[i] > 0 or values[2*i] > 0 or values[2*i+1] > 0:
if values[2*i+1] > 0:
values[2*i+1] -= 1
if values[i] > 0:
values[i] -= 1
if values[2*i] > 0:
values[2*i] -= 1
count += 1
count += sum(values)
print(count)
main()
36%
这里有一个毛病,就是当你打到第i个时,怎么做出决策。代码里写的是,必须将2*i和2*i+1位置的数打完,再继续往后走。后来,lz又想到可以判断2*i和2*i+1是否超过一半了,如果超过一半,则必须将其打完,如果没有超过一半可以考虑不打完。。当然,现在也没办法验证了。溜了溜了。。。