这题主要是将题目中容易迷惑的条件转化为易于做题的条件,题中说当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行,可以转化为两只蚂蚁相遇后继续沿原方向前进。
这样就很容易得出,当第一只蚂蚁向右运动时,所有在它右边向左运动的蚂蚁都会感冒,并且在第一只蚂蚁后面向右运动的蚂蚁也会感冒。
同理,当第一只蚂蚁向左运动时,所有在它左边向右运动的蚂蚁和在它后面向左运动的蚂蚁都会感冒。
#include<iostream>
using namespace std;
int main()
{
    int t, l=0,r=0;
    cin>>t;
    int n[t];
    for(int i=0;i<t;i++){
        cin>>n[i];
        if(n[i]<0&&i!=0&&n[i]<n[0])l++;
        if(n[i]>0&&i!=0&&n[i]<n[0])r++;
    }
    int ans=1;
    if(n[0]>0){
    for(int i=1;i<t;i++)
    {
        if(n[0]<abs(n[i])&&n[i]<0)ans++;
    }
        if(ans!=1)ans+=r;
        
    }
    else {
        for(int i=1;i<t;i++)
        {
            if(abs(n[0])>n[i]&&n[i]>0)ans++;
        }
        if(ans!=1)ans+=l;
    }
    cout<<ans;
}