2015年3月CCF计算机软件能力认证题:数字排序

来源:互联网 发布:ipad白苹果数据还在吗 编辑:程序博客网 时间:2024/06/11 15:55
数字排序
问题描述
试题编号:201503-2试题名称:数字排序时间限制:1.0s内存限制:256.0MB问题描述:问题描述
给定 n 个整数,请统计出每个整数出现的次数,按出现次数从多到少
的顺序输出。
输入格式
输入的第一行包含一个整数 n,表示给定数字的个数。
第二行包含 n 个整数,相邻的整数之间用一个空格分隔,表示所给定
的整数。
输出格式
输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的
次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则
先输出值较小的,然后输出值较大的。
样例输入
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<set>#include<map>using namespace std;typedef struct numfre{    int num, fre;    bool operator < (const numfre &a) const{        if(fre != a.fre)            return a.fre < fre;        else            return num < a.num;    }};int main(){    map<int,int> record;    int n, a;    cin >> n;    for(int i = 0; i < n; i++){        cin >> a;        record[a]++;    }    set<numfre> nfset;    nfset.clear();    for(map<int, int>::iterator it = record.begin(); it != record.end(); it++){        numfre temp;        temp.num = it->first;        temp.fre = it->second;        nfset.insert(temp);    }    for(set<numfre>::iterator it = nfset.begin(); it != nfset.end(); it++){        cout << (*it).num  << " "<< (*it).fre << endl;    }    return 0;}


阅读全文
0 0
原创粉丝点击