题目详情 - L2-039 清点代码库 (pintia.cn)
先用map构造pair对,然后使用再用vector构造pair对数组,最后使用sort对vector进行排序
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<map>
using namespace std;
const int N = 10010;
map<vector<int>,int> mp;
bool cmp (const pair<vector<int>,int> &a,const pair<vector<int>,int> &b) {
if(a.second != b.second) return a.second > b.second;
return a.first < b.first;
}
int main(){
int n,m;
cin>>n>>m;
vector<int> t;
for(int i = 0; i < n; i++){
t.clear();
for(int j = 0; j < m; j++){
int x; cin>>x; t.push_back(x);
}
mp[t]++;
}
vector<pair<vector<int>,int>> res (mp.begin(),mp.end());
sort(res.begin(),res.end(),cmp);
cout<<res.size()<<endl;
for(auto p:res){
cout<<p.second;
for(int i = 0; i < p.first.size(); i++){
cout<<' '<<p.first[i];
}
cout<<endl;
}
return 0;
}