#include<stdio.h>
using namespace std;
#include<vector>
#include<algorithm>
//注意添加一个seq记录输入的前后顺序
struct student {
int grade;
char name[20];
int seq;
};
//改写比较规则
bool compare0(student l, student r) {
//l.grade>r.grade不用交换
//l.grade=r.grade,且序号l.seq<r.seq不用交换
if (l.grade > r.grade) {
return true;
} else if (l.grade == r.grade && l.seq < r.seq) {
return true;
} else {
return false;
}
}
bool compare1(student l, student r) {
//l.grade<r.grade不用交换
//l.grade=r.grade,且序号l.seq<r.seq不用交换
if (l.grade < r.grade) {
return true;
} else if (l.grade == r.grade && l.seq < r.seq) {
return true;
} else {
return false;
}
}
int main() {
int n;
int rule;
while (scanf("%d", &n) != EOF) {
scanf("%d", &rule);
//student结构体类型的动态数组
vector<student> students(n);
//输入N个学生的姓名和成绩
for (int i = 0; i < n; i++) {
scanf("%s %d", students[i].name, &students[i].grade);
students[i].seq = i;
}
//根据rule确定排序规则
if (rule == 1) {
sort(students.begin(), students.end(), compare1);
} else {
sort(students.begin(), students.end(), compare0);
}
//打印学生姓名 成绩
for (int i = 0; i < n; i++) {
printf("%s %d\n", students[i].name, students[i].grade);
}
}
return 0;
}