这题主要是将题目中容易迷惑的条件转化为易于做题的条件,题中说当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行,可以转化为两只蚂蚁相遇后继续沿原方向前进。
这样就很容易得出,当第一只蚂蚁向右运动时,所有在它右边向左运动的蚂蚁都会感冒,并且在第一只蚂蚁后面向右运动的蚂蚁也会感冒。
同理,当第一只蚂蚁向左运动时,所有在它左边向右运动的蚂蚁和在它后面向左运动的蚂蚁都会感冒。
#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;
}

京公网安备 11010502036488号