PTA_2021年团体程序设计天梯赛_总决赛_L2-3 清点代码库 (25 分)

//
输入样例:
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 ???

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/123676888