#include <bits/stdc++.h> using namespace std; typedef struct student{ int order; char name[50];//姓名 int score;//成绩 }stu; bool comp1(stu a,stu b){ if(a.score == b.score) return a.order < b.order; return a.score>b.score;//按照学生的成绩从大到小进行排序 } bool comp2(stu a,stu b){ if(a.score == b.score) return a.order < b.order; return a.score<b.score;//按照学生的成绩从小到大进行排序 } int main() { int N; stu a[10001];//这里写大些,不然容易越界 int number; while (scanf("%d %d",&N,&number)!=EOF) { for(int i=0;i<N;i++){ scanf("%s %d",a[i].name,&a[i].score);//name是字符数组,首元素即地址,不用加& a[i].order=i; } if(number){sort(a,a+N,comp2);} else sort(a, a+N, comp1); for(int i=0;i<N;i++){ printf("%s %d\n",a[i].name,a[i].score); } } }