筛排处理 oj67

来源:互联网 发布:网络市场发展趋势 编辑:程序博客网 时间:2024/05/23 00:05

筛排处理

发布时间: 2017年5月25日 19:57   最后更新: 2017年5月26日 00:19   时间限制: 1000ms   内存限制: 128M

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N<=100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作

每组输入数据的第一行含有一个正整数N,表示后面行中有N个随机整数。若N=0,表示处理结束。

对应每组输入数据,输出一组数据,该数据由单独一行开头,内含一个N,表示后面有N个排好序的整数,整数之间空一格。每组输出数据之间空一行。

 复制
122 4 6 17 20 40 43 45 60 64 85 981735 75 40 61 56 21 85 61 50 83 52 22 44 68 51 80 380
122 4 6 17 20 40 43 45 60 64 85 981621 22 35 38 40 44 50 51 52 56 61 68 75 80 83 85
#include <cstdio>#include <iostream>#include <map>using namespace std;int main(){map<int, int> Map;map<int, int>::iterator pMap;while (1){int n,num;cin >> n;if (!n)break;for (int i = 0; i < n; i++){scanf("%d", &num);Map.insert(make_pair(num,num));}pMap = Map.begin();cout<<Map.size()<<endl;int i = 0;while (pMap != Map.end()){            i++;if (i < Map.size())cout << pMap++->first << " ";elsecout << pMap++->first;}cout << "\n\n";Map.erase(Map.begin(), Map.end());}return 0;}


原创粉丝点击