问题描述:
在长为100米的直杆上,有 n 只蚂蚁,它们分别向左向右爬动,它们的速度是一样的。但是当两只蚂蚁向撞时,
它们都会向相反方向爬去。现在有一只蚂蚁感冒了,给出各个蚂蚁所在的位置,求感冒蚂蚁数?
输入格式:
line1: 输入蚂蚁总数
line2: 第一个感冒蚂蚁位置,第二到第 m 分别表示其他蚂蚁位置
输出格式:
一个数表示感冒蚂蚁个数
样例输入:
line1: 3
line2: -5 3 8
样例输出:
2
#include <stdio.h>
int main() {
int m, i, temp, num=1;
int t[100];
scanf("%d",&m);
for(i=0;i<m;i++){
scanf("%d",&t[i]);
}
//感冒蚂蚁向右走
if(t[0]>0){
temp = 0;
for(i=1;i<m;i++){
//如果在它右边有蚂蚁向左走,则肯定会被传染。
if(t[i]<0 && -t[i]>t[0]) temp++;
}
num += temp;
//如果在它右边没有向左走的蚂蚁,那么怎么走都不会传染其他蚂蚁
if(temp==0){
printf("%d\n",num);
return 0;
}
else{
temp = 0;
for(i=1;i<m;i++){
//那么在它左边有向右的蚂蚁也会被传染
if(t[i]>0 && t[i]<t[0]) temp++;
}
num += temp;
}
}else{//感冒蚂蚁头向左(与向右同思想)
temp = 0;
for(i=1;i<m;i++) if(t[i]>0 && t[i]<-t[0]) temp++;
num += temp;
if(temp==0){
printf("%d\n",num);
return 0;
}
else{
temp = 0;
for(i=1;i<m;i++) if(t[i]<0 && t[i]<t[0]) temp++;
num += temp;
}
}
printf("%d\n",num);
return 0;
}