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
}

禁止抄袭