#include <iostream>
using namespace std;
int main()
{
int a[50]={0};
int n;
cin>>n;
for(int i=0;i<n;++i)
cin>>a[i];
int ans;
int count1=1;
int count2=0;
if(a[0]>0)//感冒的蚂蚁朝右走(+):右边朝左走的蚂蚁(>&&-)和左边朝右走的蚂蚁(<&&+)感冒
{
for(int i=1;i<n;++i)
{
if((a[i]*a[0]<0&&abs(a[i])>abs(a[0])))//右边朝左走的蚂蚁
count1++;
if((a[i]*a[0]>0&&abs(a[i])<abs(a[0])))//左边朝右走的蚂蚁
count2++;
}
}
else//感冒的蚂蚁朝左走(-):左边朝右走的蚂蚁(<&&+)和右边朝左走的蚂蚁(>&&-)感冒
{
for(int i=1;i<n;++i)
{
if((a[i]*a[0]<0&&abs(a[i])<abs(a[0])))//左边朝右走的蚂蚁
count1++;
if((a[i]*a[0]>0&&abs(a[i])>abs(a[0])))//右边朝左走的蚂蚁
count2++;
}
}
if(count1>1)//count>1说明在第一只感冒的蚂蚁运动的过程中与别的蚂蚁碰面了,碰面的蚂蚁被传染。若感冒的蚂蚁是朝左走的,只有它把感冒传染给左边朝右走的蚂蚁,那么右边朝左走的蚂蚁才会感冒。否则,感冒蚂蚁的数量为1.
ans = count1+count2;
else
ans = count1;
cout<<ans<<"\n";
return 0;
}
蓝桥杯 蚂蚁感冒
最新推荐文章于 2024-10-09 10:07:13 发布