[CCF201503-2]番号の並べ替え(コンパイルエラー)

問題の説明
  n個の整数が与えられた場合、各整数の出現回数を数え、出現回数の順に出力してください。
入力フォーマット入力
  の最初の行には、指定された数値の数を表す整数nが含まれています。
  2行目にはn個の整数が含まれ、隣接する整数はスペースで区切られ、指定された整数を示します。
出力形式
  複数の行を出力します。各行には、指定された整数とその出現回数をそれぞれ表す2つの整数が含まれています。発生順に出力します。2つの整数が同じ回数出現する場合、小さい方の値が最初に出力され、次に大きい方の値が出力されます。
サンプル入力

12
5 2 3 3 1 3 4 2 5 2 3 5

サンプル出力

3 4
2 3
5 3
1 1
4 1

評価のユースケースの規模と規則

1≤n≤1000の場合、指定された数値はすべて1000を超えない負でない整数です。

これはどのような操作ですか?どの時代のコンパイラが使用されていますか?まあ、私はそれを探して見つけています。とにかく、方法は問題ありません。これ、出された。変更されました、右

ここに写真の説明を挿入

コンパイルエラー
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

bool cmp(pair<int,int> p1,pair<int,int> p2){
    
    
	if(p1.second!=p2.second)
		return p1.second>p2.second;
	else
		return p1.first<p2.first;
}

int main(){
    
    
	int n,num;
	cin >> n;
	map<int,int> m;
	vector<pair<int,int>> v;
	for(int i = 0;i<n;i++){
    
    
		cin >> num;
		m[num]++;
	}
	for(auto it = m.begin();it!=m.end();it++){
    
    
		v.push_back(make_pair(it->first,it->second));
	}
	sort(v.begin(),v.end(),cmp);
	for(auto it = v.begin();it!=v.end();it++){
    
    
		cout << it->first << " " << it->second << endl;
	}
	return 0;
}
ACコード
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

bool cmp(pair<int,int> p1,pair<int,int> p2){
    
    
	if(p1.second!=p2.second)
		return p1.second>p2.second;
	else
		return p1.first<p2.first;
}

int main(){
    
    
	int n,num;
	cin >> n;
	map<int,int> m;
	for(int i = 0;i<n;i++){
    
    
		cin >> num;
		m[num]++;
	}
	vector<pair<int,int> > v(m.begin(),m.end()); 
	sort(v.begin(),v.end(),cmp);
	for(int i = 0;i<v.size();i++){
    
    
        cout << v[i].first << " " << v[i].second << endl;
    }
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_45845039/article/details/109287722