网站做ppt模板下载地址,wordpress 文章空白页,百度地图驾车ar实景导航,网站视频下载windows题目描述 一个荒岛上有若干人#xff0c;岛上只有一条路通往岛屿两端的港口#xff0c;大家需要逃往两端的港口才可逃生。
假定每个人移动的速度一样#xff0c;且只可选择向左或向右逃生。
若两个人相遇#xff0c;则进行决斗#xff0c;战斗力强的能够活下来#xff…题目描述 一个荒岛上有若干人岛上只有一条路通往岛屿两端的港口大家需要逃往两端的港口才可逃生。
假定每个人移动的速度一样且只可选择向左或向右逃生。
若两个人相遇则进行决斗战斗力强的能够活下来并损失掉与对方相同的战斗力若战斗力相同则两人同归于尽。
输入描述 给定一行非 0 整数数组元素个数不超过30000
正负表示逃生方向正表示向右逃生负表示向左逃生绝对值表示战斗力越左边的数字表示里左边港口越近逃生方向相同的人永远不会发生决斗。
输出描述 能够逃生的人总数没有人逃生输出0输入异常时输出-1。
用例1 输入 5 10 8 -8 -5 输出 2 说明 第3个人和第4个人同归于尽第2个人杀死第5个人并剩余5战斗力第1个人没有遇到敌人。
nums list(map(int,input().split()))
#本质上是一个栈的问题
def getresult():negative 0 #从左边出来的负数的个数intnums []for num in nums:if num0:return -1if num0:intnums.append(num)else:while True:if len(intnums)0:negative1breakdif numintnums.pop()if dif0:intnums.append(dif)breakelif dif0:numdifelse:breakreturn negativelen(intnums)
print(getresult())