//
输入样例:
7 3
35 28 74
-1 -1 22
28 74 35
-1 -1 22
11 66 0
35 28 74
35 28 74
输出样例:
4
3 35 28 74
2 -1 -1 22
1 11 66 0
1 28 74 35
v.insert() 插入数据
map_插入数据_four_means
map_统计出现次数_temp_three_means
// L2-3 清点代码库 (25 分)
#include<bits/stdc++.h>
using namespace std;
int n,m; //
vector<int> v;
vector< pair< vector<int>,int > > vv;
map< vector<int>,int > mp;
pair< map< vector<int>,int >::iterator,bool > pit; // C.insert() 的返回值
bool cmp( const pair< vector<int>,int >& x,const pair< vector<int>,int >& y )
{
if( x.second != y.second ) return ( x.second > y.second ) ;
else
{
for( int i=0;i<m;i++ ) // m
{
if( (x.first)[i] == (y.first)[i] ) continue;
else if( (x.first)[i] < (y.first)[i] ) return true;
else if( (x.first)[i] > (y.first)[i] ) return false;
}
return false;
}
}
int main()
{
int i,j,x;
while( cin>>n>>m )
{
while( n-- )
{
v.clear();
for( i=0;i<m;i++ ) { cin>>x; v.push_back(x); }
pit=mp.insert( { v,1 } );
if( pit.second==false ) pit.first->second++;
}
vv.insert( vv.end(),mp.begin(),mp.end() );
sort( vv.begin(),vv.end(),cmp );
cout<<vv.size()<<endl;
for( auto i:vv )
{
cout<<i.second; // not endl;
for( j=0;j<m;j++ ) // m
{
cout<<' '<<(i.first)[j]; // j
}
cout<<endl;
}
}
return 0;
}
// map's key do not struct ???