PTA_L2-039インベントリコードベース(25ポイント)_map_vector

//
#include<bits/stdc++.h>
using namespace std;
                        // 之前一直想着 重载 map 的运算符 来实现 
                        // 现在发现 重载运算符 只能改变 key 的排序规则 T_T
map< vector<int>,int > mp;
vector< pair< vector<int>,int > > vp;
vector<int> v;

bool cmp( const pair< vector<int>,int >& x,const pair< vector<int>,int >& y )
{
    return ( x.second == y.second ) ? ( x.first < y.first ) : ( x.second > y.second ) ;
}

int main()
{
	int n,m,i,j,x;
	
    while( cin>>n>>m )
    {
        vp.clear();
        while( n-- )
        {
            v.clear();
            for( i=0;i<m;i++ )
            {
                cin>>x; v.push_back( x );
            }
            mp[v]++;            
        }
        vp.insert( vp.end(),mp.begin(),mp.end() );
        sort( vp.begin(),vp.end(),cmp );
                                    // 放负数可直接从大到小排
        cout<<vp.size()<<endl;
        for( i=0;i<vp.size();i++ )
        {
            cout<<vp[i].second;
            v=vp[i].first;
            for( j=0;j<v.size();j++ ) cout<<" "<<v[j];
            cout<<endl;
        }
    }
    return 0;
}

おすすめ

転載: blog.csdn.net/qq_63173957/article/details/124384290