专栏文章

B2159 成绩排序题解

B2159题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miopd2aj
此快照首次捕获于
2025/12/02 22:58
3 个月前
此快照最后确认于
2025/12/02 22:58
3 个月前
查看原文

思路

本题可以用vector<pair<string,int>>数组,前项存姓名,后项存分数。如果后项不同,返回分数高的;否则返回姓名字典序小的。第27行这里的auto类型其实是pair<string,int>,输出排序后数组里的元素即可。(听懂点赞

代码

CPP
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp(pair<string,int> a,pair<string,int> b)
{
	if(a.second != b.second)
	{
		return a.second > b.second;
	}
	return a.first < b.first;
}

int main() {
	int n;
	cin >> n;
	
	vector<pair<string,int>> v(n);
	
	for(int i = 0;i < n;i++)
	{
		cin >> v[i].first >> v[i].second;
	}
	sort(v.begin(),v.end(),cmp);
	
	for(auto c : v)
	{
		cout << c.first << ' ' << c.second << '\n';
	}

	return    0;//hhh
}


禁止抄袭

评论

0 条评论,欢迎与作者交流。

正在加载评论...