B2159 成绩排序题解
题目传送门
思路
本题可以用vector<pair<string,int>>数组,前项存姓名,后项存分数。如果后项不同,返回分数高的;否则返回姓名字典序小的。第27行这里的auto类型其实是pair<string,int>,输出排序后数组里的元素即可。(听懂点赞)
代码
#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
}
禁止抄袭