方法1
#include<bits/stdc++.h>
using namespace std;
map<vector<int>,int> cnt;
multimap<int,vector<int>> ans;
int main()
{
int n,m;scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
vector<int> line;
for(int j=0;j<m;j++)
{
int x;scanf("%d",&x);
line.push_back(x);
}
cnt[line]++;
}
for(auto &[k,v]:cnt)
ans.insert({-v,k});
printf("%d\n",cnt.size());
for(auto &[k,v]:ans)
{
printf("%d",-k);
for(auto &x:v)
printf(" %d",x);
printf("\n");
}
return 0;
}
方法2
#include<bits/stdc++.h>
using namespace std;
map<vector<int>,int> cnt;
vector<pair<int,vector<int>>> ans;
int main()
{
int n,m;scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
vector<int> line;
for(int j=0;j<m;j++)
{
int x;scanf("%d",&x);
line.push_back(x);
}
cnt[line]++;
}
for(auto &[k,v]:cnt) ans.push_back({-v,k});
sort(ans.begin(),ans.end());
printf("%d\n",cnt.size());
for(auto &[k,v]:ans)
{
printf("%d",-k);
for(auto &x:v)
printf(" %d",x);
printf("\n");
}
return 0;
}