文章

4

粉丝

140

获赞

8

访问

37.1k

头像
清华上机:成绩排序1151
推荐阅读
P1151 清华大学上机题
发布于2021年5月26日 10:18
阅读数 9.1k

#include<bits/stdc++.h>
using namespace std;
int main(){
	multimap<int, string> mmap;//构造一个允许键的值重复的map储存(分数,姓名)
	string name = "";
	int score = 0; 
	int num = 0, type = 0;;
	cin >> num >> type;//输入要排序人的个数及排序方式:0降序 1升序 
	
	int i = 0;
	while(i < num && (cin >> name >> score)){
		mmap.emplace(score, name);//默认升序排列且稳定
		i++;	
	}
	
	if(type == 0){//如果是降序排列,倒着输出即可 
		for(auto j = mmap.rbegin(); j != mmap.rend(); j++)//这里j是反向迭代器 
			cout << j->second << ' ' << j->first << endl;
	}else{//升序正着输出 
		for(auto j = mmap.begin(); j != mmap.end(); j++)
			cout << j->second << ' ' << j->first << endl;
	}
	
	return 0;
}
  1. 本题只要求你cout正确即可,故不必再对已升序的map再降序排一次,用反向迭代器倒着输出即可。
  2. 注意反向迭代器的用法。
  3. multimap默认按key值稳定升序排列。
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发