1. 注意使用stable sort,因为如果在没有指定 string 顺序的时候,sort排序方法是不稳定的。就算score相同,基于只关注我们要的进行比较就行的思想,他也会在相等时发生顺序改变,因此要用stable sort。vector 排序,只能sort!!!!!不要构造的时候发生变化。
#include<bits/stdc++.h>

using namespace std;

struct cmpu{
    bool operator()(pair<string,int> a, pair<string,int> b){

        return a.second < b.second;//如果只关注一种或比较,直接写这个
    }

};

struct cmpd{
    bool operator()(pair<string,int> a, pair<string,int> b){

        return a.second > b.second;//如果只关注一种或比较,直接写这个
    }

};


int main(){

    int M;
    int op;
    vector<pair<string,int>> up;
    vector<pair<string,int>> down;
    while(cin>>M>>op){
        up.clear();
        down.clear();

        string s; int score;
        if(op==1){//升序

            for(int i =0; i< M;i++){
                cin>>s>>score;
                up.push_back({s,score});
            }

            stable_sort(up.begin(),up.end(),cmpu());//因为要在score一样的情况下先后顺序不变,因此需要稳定排序

            for(int i =0; i< M;i++){
                cout<<up[i].first<<" "<<up[i].second<<endl;
            }

        }else{
             for(int i =0; i< M;i++){
                 cin>>s>>score;
                 down.push_back({s,score});
            }

            stable_sort(down.begin(),down.end(),cmpd());//因为要在score一样的情况下先后顺序不变,因此需要稳定排序
            for(int i =0; i< M;i++){
                cout<<down[i].first<<" "<<down[i].second<<endl;
            }
        }


    }

}