题解
2025-07-12 19:38:27
发布于:广东
21阅读
0回复
0点赞
代码有注释,已经有缩进,直接复制即可
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> positions(n);
for (int i = 0; i < n; ++i) {
cin >> positions[i];
}
int first_pos = positions[0];
int count = 1; // 初始时第一只蚂蚁已经感冒
// 情况1:第一只蚂蚁向右移动
if (first_pos > 0) {
// 统计左边向右移动的蚂蚁数量
int left_right = 0;
for (int i = 1; i < n; ++i) {
if (positions[i] < 0 && abs(positions[i]) > first_pos) {
left_right++;
}
}
// 如果有左边向右移动的蚂蚁,则统计右边向左移动的蚂蚁数量
if (left_right > 0) {
for (int i = 1; i < n; ++i) {
if (positions[i] > 0 && positions[i] < first_pos) {
count++;
}
}
count += left_right;
}
}
// 情况2:第一只蚂蚁向左移动
else {
// 统计右边向左移动的蚂蚁数量
int right_left = 0;
for (int i = 1; i < n; ++i) {
if (positions[i] > 0 && positions[i] < abs(first_pos)) {
right_left++;
}
}
// 如果有右边向左移动的蚂蚁,则统计左边向右移动的蚂蚁数量
if (right_left > 0) {
for (int i = 1; i < n; ++i) {
if (positions[i] < 0 && abs(positions[i]) > abs(first_pos)) {
count++;
}
}
count += right_left;
}
}
cout << count << endl;
return 0;
}
这里空空如也
有帮助,赞一个