AcWing 1211. 蚂蚁感冒
原题链接
简单
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int n;
int arr[100];
int ants=1;
int main(){
int right=0;
int left=0;
cin >>n;
for (int i = 0; i < n; ++i) {
cin>>arr[i];
}
for (int i = 0; i < n; ++i) {
if(arr[i]<0 && abs(arr[i])>abs(arr[0]))
right++;//右边向左走的
if(arr[i]>0 && abs(arr[i])<abs(arr[0]))
left++; //左边向右走的
}
ants=right+left+1;
// 还有一种特殊情况,就是当第一只蚂蚁向左走的时候,如果第一只蚂蚁左边没有向右爬行的蚂蚁,
// 由于爬行速度相同,所以不管第一只蚂蚁右边有多少向左爬行的,其右边的蚂蚁永远不可能被感染。
// 同理,当第一只蚂蚁向右走的时候,如果第一只蚂蚁右边没有向左爬行的蚂蚁,其左边也永远不可能感染。
if((right==0 && arr[0]>0) || (left==0 && arr[0]<0) )
ants=1;
cout <<ants;
}