由于有学生总是不写新生组,hehe老师心里很伤心。伤心的hehe老师要去大学上班,经过了一条长长的桥。
该桥上有人往左边走,有人往右边走。
每个人都只能沿着桥向前走,速度是 1m/s。
当两个人碰面的时候,它们会同时掉头往相反的方向走。
这些人中,当然也有hehe老师,wuwu老师,fufu老师,lala老师等。
伤心的hehe老师与其他人碰面的时候会把伤心传给碰面的人。
同时伤心的人在和其它人碰面时,也会把伤心传染给碰到的人。
请你计算,当所有人都离开天桥时,有多少人伤心了。
输入格式 第一行是一个数 n ;
第二行是 n 个用空格分开的整数 xi( −100≤x i≤100 ), ∣x i∣表示每一个人距离大桥最左边的距离。正值表示人朝右走,负值表示人朝左走,数据中不会出现 0 值,也不会出现两个人占用同一位置。其中,第一个位置代表的是hehe老师的位置。
输出格式
1 个整数,表示最后伤心的人的数目。
输入数据1
3
5 -2 8
输出数据1
1
输入数据 2
3
1 -2 8
输出数据 2
2
样例解释
样例1中第二个人和第三个人不会和hehe碰面,因此只有hehe老师伤心。
样例2中第二个人会和hehe碰面,因此他也伤心了。所以是两个人伤心。
测评数据规模 对于 100% 的数据,
1≤n≤100,
−100≤xi≤100。
50分
#include <iostream>
#include <vector>
#include <algorithm> // 引入algorithm头文件
using namespace std;
int countSadPeople(int n, vector<int>& positions) {
vector<int> sadness(n, 0); // 初始化每个人的伤心值为0
for (int i = 0; i < n; ++i) { // 遍历每个人
for (int j = 0; j < n; ++j) { // 计算每个人与其他人的碰面情况
if (i != j) { // 除去自身
int distance = positions[j] - positions[i]; // 计算距离
if ((distance > 0 && positions[i] > 0) || (distance < 0 && positions[i] < 0)) { // 如果两人同向且在同一侧
sadness[i] += 1; // 当前人伤心值加1
}
}
}
}
// 统计最大伤心值的人数
int maxSadness = *max_element(sadness.begin(), sadness.end());
return count(sadness.begin(), sadness.end(), maxSadness);
}
int main() {
int n;
cin >> n; // 输入人数
vector<int> positions(n);
for (int i = 0; i < n; ++i) {
cin >> positions[i]; // 输入每个人的位置
}
// 调用函数并输出结果
cout << countSadPeople(n, positions) << endl;
return 0;
}