#include <iostream> #include<algorithm> #include<cstdio> using namespace std; struct Student { char name[100]; int grade; int sq; }; bool comp0(Student lh, Student rh) { //降序,左比小的时候换! if (lh.grade != rh.grade) { return lh.grade > rh.grade; } else { return lh.sq < rh.sq; // 学生序号从小到大排序 } } bool comp1(Student lh, Student rh) { //升序 if (lh.grade != rh.grade) { return lh.grade < rh.grade; } else { return lh.sq < rh.sq; // 学生序号从小到大排序 } } int main() { int seq = 0; int i; int n;//参与排序的数列 int cab;//排序方法 Student arr[1000]; while(scanf("%d %d", &n, &cab) != EOF){ for (int i = 0; i < n; i++) { scanf("%s %d", arr[i].name, &arr[i].grade); arr[i].sq = i + 1; } if (cab == 0) { sort(arr, arr + n, comp0); for (i = 0; i < n; i++) { printf("%s %d\n", arr[i].name, arr[i].grade); } } else if (cab == 1) { sort(arr, arr + n, comp1); for (i = 0; i < n; i++) { printf("%s %d\n", arr[i].name, arr[i].grade); } } } } // 64 位输出请用 printf("%lld")