#include <stdio.h>
typedef struct
{
char name[20];
int score;
int origin_index;
}student_t;
int main()
{
int num, type;
student_t students[200];
if(scanf("%d", &num) == EOF)
{
return -1;
}
if(scanf("%d", &type) == EOF)
{
return -2;
}
for(int i = 0; i < num; i++)
{
scanf("%s", students[i].name);
scanf("%d", &students[i].score);
students[i].origin_index = i;
}
/* 冒泡排序 */
for(int i = 0; i < num; i++)
{
for(int j = i+1; j < num; j++)
{
if(type == 1) //由低到高
{
if(students[i].score > students[j].score)
{
student_t tmp;
memcpy(&tmp, &students[i], sizeof(student_t));
memcpy(&students[i], &students[j], sizeof(student_t));
memcpy(&students[j], &tmp, sizeof(student_t));
}
}
else if(type == 0) //由高到底
{
if(students[i].score < students[j].score)
{
student_t tmp;
memcpy(&tmp, &students[i], sizeof(student_t));
memcpy(&students[i], &students[j], sizeof(student_t));
memcpy(&students[j], &tmp, sizeof(student_t));
}
}
}
}
/* 相同分数,按出现前后排序 */
for(int i = 0; i < num-1; i++)
{
int j = i+1;
/* 寻找相同分数的所有学生 */
while(students[i].score == students[j].score && j < num)
{
j++;
}
/* 此分数学生按出现前后重新排序 */
for(int k = i; k < j; k++)
{
for(int m = k+1; m < j; m++)
{
if(students[k].origin_index > students[m].origin_index)
{
student_t tmp;
memcpy(&tmp, &students[k], sizeof(student_t));
memcpy(&students[k], &students[m], sizeof(student_t));
memcpy(&students[m], &tmp, sizeof(student_t));
}
}
}
}
for(int i = 0; i < num; i++)
{
printf("%s %d\n", students[i].name, students[i].score);
}
return 0;
}