问题描述】给定含有S个元素的多重集合S(元素未排序),每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={2,1,2,3,2,5}。多重数S的众数是2,其重数为3 。对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。
【输入形式】第1行为多重数集S中元素个数n;接下来的n行中,每行有一个自然数。
【输出形式】输出文件有2行,第1行是众数,第2行是重数。
【样例输入】
6
2
1
2
3
2
5
【样例输出】
2
3
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n; // 读取元素个数
map<int, int> countMap; // 用于存储每个元素及其出现次数
for (int i = 0; i < n; ++i) {
int num;
cin >> num; // 读取每个元素
countMap[num]++; // 更新该元素的出现次数
}
// 找到出现次数最多的元素及其次数
int maxCount = 0;
int mode = 0; // 存储众数
for (auto& pair : countMap) {
if (pair.second > maxCount) {
maxCount = pair.second;
mode = pair.first;
}
}
// 输出众数和重数
cout << mode << endl;
cout << maxCount << endl;
return 0;
}