L2-3 清点代码库【STL】
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
struct Node{
vector<int> v;
int note;
};
vector<Node> v;
vector<int> vv;
map<vector<int>,int> mp;
bool cmp(Node a,Node b){
if(a.note == b.note)
return a.v < b.v;
return a.note > b.note;
}
signed main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m;
int p;
for(int i = 1;i <= n;++i){
vv.clear();
for(int j = 1;j <= m;++j){
cin>>p;
vv.push_back(p);
}
mp[vv]++;
}
for(map<vector<int>,int>::iterator it = mp.begin();it != mp.end();++it){
v.push_back({
it->first,it->second});
}
sort(v.begin(),v.end(),cmp);
cout<<v.size()<<"\n";
for(int i = 0;i < v.size();++i){
cout<<v[i].note;
for(int j = 0;j < v[i].v.size();++j)
cout<<" "<<v[i].v[j];
cout<<"\n";
}
return 0;
}