#include <bits/stdc++.h>
using namespace std;
set<vector<int>> st;
map<vector<int>, int> mp;
struct cmp //自定义set排序
{
bool operator()(const pair<int, vector<int>> &a, const pair<int, vector<int>> &b) const
{
if (a.first != b.first)
return a.first > b.first;
else
return a.second < b.second;
}
};
set<pair<int, vector<int>>, cmp> ct;
int main()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
vector<int> vt;
for (int j = 0; j < m; j++)
{
int x;
cin >> x;
vt.push_back(x);
}
mp[vt]++;
st.insert(vt);
}
cout << st.size() << endl;
for (auto e : st)
{
ct.insert({mp[e], e});
}
for (auto it : ct)
{
cout << it.first;
for (int i = 0; i < it.second.size(); i++)
cout << " " << it.second[i];
cout << endl;
}
return 0;
}
最后附上一个set自定义的链接吧 从这学的
link