#include <stdio.h>
typedef struct {
char bn[50];
int price;
} book;
int main() {
int i, n, m;
scanf("%d",&n);
book bookn[n+1], k; //构造book类型结构数组(一般编译器都会报错,因为n不是常量);
for (i = 0; i < n; i++) { //存储书目;
scanf("%s %d", bookn[i].bn, &bookn[i].price);
}
//按照排序方法直接以price排序各数组元素
//假设最坏情况,刚好各元素都是降序排列
for (i = 0; i < n; i++) {
//第一个for是从每次更新的数组的首元素开始左右互换,假设最坏情况每次首元素都是本轮最大的,需要丢到最后去
for (m = 0; m < n - i-1;
m++) { //m=n-i是因为每轮最大的丢到最后总会比上一轮最大的小,在上一轮最大的前面换不动了,所以只需要比上轮少换一次
//比较price 成员
if (bookn[m].price > bookn[m + 1].price)
{
k = bookn[m];
bookn[m] = bookn[m + 1];
bookn[m+1] = k;
}
}
}
//用for循环输出排序后的数组元素即可
for (i = 0; i <n; i++)
printf("%s\n", bookn[i].bn);
return 0;
}