1. 题目描述
题目链接:“蓝桥杯”练习系统
2. 解题思路
当感冒的蚂蚁和其它未感冒的蚂蚁碰面时,会把感冒传染给碰到的蚂蚁,并且它们会同时掉头往相反的方向爬行。那么可以等价为,当两只蚂蚁碰面时,它们会到达对方的位置且不改变方向继续向前爬行。
1)当第一只感冒的蚂蚁向右爬行时:
① 第一只感冒的蚂蚁右边的且向左爬行的蚂蚁(right)都会与它碰面并被传染感冒,从而第一只感冒的蚂蚁左边的且向右爬行的蚂蚁(left)都会被第一只感冒的蚂蚁右边的且向左爬行的蚂蚁传染。则:
count = left + right +1 (1为第一只感冒的蚂蚁)
② 若第一只感冒的蚂蚁右边没有向左爬的蚂蚁,那么第一只感冒的蚂蚁左边的且向右爬行的蚂蚁(left)也就不会被传染,则:
count = 1
2)当第一只感冒的蚂蚁向左爬行时:
① 第一只感冒的蚂蚁左边的且向右爬行的蚂蚁(left)都会与它碰面并被传染感冒,从而第一只感冒的蚂蚁右边的且向左爬行的蚂蚁(right)都会被第一只感冒的蚂蚁左边的且向右爬行的蚂蚁传染。则:
count = left + right +1 (1为第一只感冒的蚂蚁)
② 若第一只感冒的蚂蚁左边没有向右爬的蚂蚁,那么第一只感冒的蚂蚁右边的且向左爬行的蚂蚁(right)也就不会被传染,则:
count = 1
3. 代码
n = int(input())
ants = list(map(int,input().split()))
left = 0
right = 0
for i in range(1,n):
if(abs(ants[0])>abs(ants[i]) and ants[i]>0):
left += 1
elif(abs(ants[0])<abs(ants[i]) and ants[i]<0):
right+=1
if(ants[0]>0 and right==0 ) or (ants[0]<0 and left==0):
print(1)
else:
print(left+right+1)