题目
题解
首先,两个蚂蚁碰头等价于穿过。
以第一个蚂蚁为中心,确定向左和向右的蚂蚁数量,如果蚂蚁在第一个蚂蚁的左边并且向左移动,肯定不会碰头,同时如果蚂蚁在第一个蚂蚁的右边并且向右走,肯定也不会碰头。
最后,统计得到左右的蚂蚁数量,如果第一个蚂蚁向右走并且右边的蚂蚁数量为0则不会再感染其他蚂蚁了。
#include<iostream>
using namespace std;
const int N=60;
int n,x[N];
int main(){
cin>>n;
for(int i=0;i<n;i++)cin>>x[i];
int left=0,right=0;
for(int i=1;i<n;i++){
if(abs(x[0])>abs(x[i])&&x[i]>0)left++;//向左走的蚂蚁(x[i]<0)必定不会碰头
else if(abs(x[0])<abs(x[i])&&x[i]<0)right++;//向右走的蚂蚁(x[i]>0)必定不会碰头
}
if(x[0]>0&&right==0||x[0]<0&&left==0)cout<<1<<endl;
else cout<<right+left+1<<endl;
return 0;
}