L1-034 点赞
作者:
lvjj
,
2024-03-30 13:28:11
,
所有人可见
,
阅读 4
#include <bits/stdc++.h>
using namespace std;
pair<int,int> pa;
vector<pair<int,int>> ve;
map<int,int> ma;
int temp;
bool cmp(const pair<int,int>&a,const pair<int,int>&b){
if(a.second!=b.second)return a.second>b.second;
return a.first>b.first;
}
int main(){
int n,m,num;
cin>>n;
while(n--){
cin>>m;
while(m--){
cin>>num;
//我想令键为出现的数字,值为数字出现的次数,然后先对值排序,在对键排序
//然而map不支持直接对值进行排序,所以我们用一个vector内嵌pair(pair只能存一个键值对,所以放到vector)来模拟map,然后用pair来进行键值排序
//不过也可以先用map初始化,把对应数字出现的次数都加上(这部操作用map更方便),再用vector复制
ma[num]++;
}
}
ve.assign(ma.begin(),ma.end());//定义与拷贝操作分开可用assign。assign相当于清空原来的元素然后用新的元素覆盖
//为什么上面用insert就不行??
sort(ve.begin(),ve.end(),cmp);
//返回迭代器指向的第一个键值对
vector<std::pair<int, int>>::iterator it = ve.begin();
cout<<it->first<<' '<<it->second;
return 0;
}