清华-成绩排序

题目:

输入学生个数n,排序方式op,0代表降序,1代表升序,下面n行每行输入一个学生姓名和学生成绩,要求稳定排序后输出。

 

输入样例:

3
0
fang 90
yang 50
ning 70

  

输出样例:

fang 90
ning 70
yang 50

  

code:

#include<bits/stdc++.h>

using namespace std;

#define maxn 10010

int id[maxn],sc[maxn];
string name[maxn];

bool cmp0(int i,int j){
    return sc[i]>sc[j];
}
bool cmp1(int i,int j){
    return sc[i]<sc[j];
}

int main(){
    int n,op;
    while(cin>>n>>op){
        for(int i=0;i<n;i++){
            id[i]=i;
            cin>>name[i]>>sc[i];
        }
        if(op==1){
            stable_sort(id,id+n,cmp1);
        }else{
            stable_sort(id,id+n,cmp0);
        }
        for(int i=0;i<n;i++){
            cout<<name[id[i]]<<' '<<sc[id[i]]<<endl;
        }
    }
    return 0;
}

  

posted @ 2019-03-29 21:05  AcceleratorCoder  阅读(163)  评论(0)    收藏  举报