#include <codecvt>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
class Grade {
private:
/* data */
public:
Grade(/* args */);
~Grade();
string m_Name;
int number;
int m_Grade;
};
Grade::Grade(/* args */) = default;
Grade::~Grade() {
}
void foreach (vector<Grade> &V) {
auto iter = V.begin();
while (iter != V.end()) {
cout << (*iter).m_Name << ' ' << (*iter).m_Grade <<endl;
iter++;
}
}
bool cmp(Grade &num1, Grade &num2) { //desc
if (num1.m_Grade == num2.m_Grade)
return num1.number < num2.number;//降序
else
return num1.m_Grade > num2.m_Grade;
}
bool cmp1(Grade &num1, Grade &num2) { //asc
if (num1.m_Grade == num2.m_Grade)
return num1.number < num2.number;//升序
else
return num1.m_Grade < num2.m_Grade;
}
int main() {
int a, b;
vector<Grade> v1;
// cout << "enter a b:\n";
while (cin >> a) {
v1.clear();
cin >> b;
cin.get();
int Number = 0;
while (a--) {
// cout << "str1 num:\n";
Grade g;
cin >> g.m_Name >> g.m_Grade;
g.number=Number;
Number++;
v1.push_back(g);
}
if (b == 1)
sort(v1.begin(), v1.end(), cmp1);
else
sort(v1.begin(), v1.end(), cmp);
foreach(v1);
}
return 0;
}