n 个数 a1,a2,…,an 和 m 个询问。 每次询问给一个数 x ,回答 a1,a2,…,an 里面分别有多少个数字小于 x ,等于 x 以及大于 x 。c++代码
时间: 2024-09-14 14:14:13 浏览: 30
a2s-php-demo.zip_A2s-a1-rh_DEMO
要回答这个查询,我们可以首先对数组`a1,a2,...,an`进行排序,然后遍历排序后的数组,同时维护三个变量来分别统计小于、等于和大于`x`的元素数量。在每次询问中,我们只需要输出这三个变量的值,然后根据询问的`x`值更新统计变量。
以下是一个简单的C++代码实现:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
// 函数用于统计数组中小于、等于和大于x的元素数量
void countElements(int arr[], int n, int x, int &less, int &equal, int &greater) {
less = equal = greater = 0;
for (int i = 0; i < n; ++i) {
if (arr[i] < x) less++;
else if (arr[i] == x) equal++;
else greater++;
}
}
// 主函数处理询问
int main() {
int n, m;
cin >> n; // 输入数组的长度
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i]; // 输入数组元素
}
sort(arr, arr + n); // 对数组进行排序
cin >> m; // 输入询问的次数
for (int i = 0; i < m; ++i) {
int x;
cin >> x; // 输入询问的数值
int less, equal, greater;
countElements(arr, n, x, less, equal, greater); // 调用函数统计结果
cout << less << ' ' << equal << ' ' << greater << endl; // 输出结果
}
return 0;
}
```
使用这个程序,你可以先输入数组的长度和数组元素,然后输入询问的次数和每次询问的`x`值,程序会输出每次询问的答案。
阅读全文