#include <iostream>
#include <vector>
#include <string>
#include <utility>
#include <algorithm>
using namespace std;
typedef pair<string,int> PAIR;
//函数
/*bool LowToHigh(const PAIR& lhs, const PAIR& rhs)
{
return lhs.second< rhs.second;
};
/*bool HighToLow(const PAIR& lhs, const PAIR& rhs)
{
return lhs.second> rhs.second;
};*/
//模板仿函数
template<class T>
class HighToLow
{ public:
bool operator()(const T& lhs, const T& rhs)
{
return rhs.second<lhs.second;
}
};
template<class T>
class LowToHigh
{ public:
bool operator()(const T& lhs, const T& rhs)
{
return rhs.second>lhs.second;
}
};
//仿函数
/*
class HighToLow
{ public:
bool operator()(const PAIR& lhs, const PAIR& rhs)
{
return rhs.second<lhs.second;
}
};
class LowToHigh
{ public:
bool operator()(const PAIR& lhs, const PAIR& rhs)
{
return rhs.second>lhs.second;
}
};
*/
int main()
{
int num;
int a;
cin>>num>>a;
string name;
int score;
int i;
vector<pair<string,int>> nameScore;
for(i=0;i<num;i++)
{
cin>>name;
cin>>score;
nameScore.push_back(make_pair(name,score));
}
switch(a)
{
//模板型仿函数
case 0:sort(nameScore.begin(),nameScore.end(),HighToLow<PAIR>());break;
case 1:sort(nameScore.begin(),nameScore.end(),LowToHigh<PAIR>());break;
//仿函数
/*
case 0:sort(nameScore.begin(),nameScore.end(),HighToLow());break;
case 1:sort(nameScore.begin(),nameScore.end(),LowToHigh());break;
*/
//函数
/*
case 0:sort(nameScore.begin(),nameScore.end(),HighToLow);break;
case 1:sort(nameScore.begin(),nameScore.end(),LowToHigh);break;
*/
default:break;
}
for(i=0;i<num;i++)
{
cout<<nameScore[i].first<<" "<<nameScore[i].second<<endl;
}
return 0;
}
#include <vector>
#include <string>
#include <utility>
#include <algorithm>
using namespace std;
typedef pair<string,int> PAIR;
//函数
/*bool LowToHigh(const PAIR& lhs, const PAIR& rhs)
{
return lhs.second< rhs.second;
};
/*bool HighToLow(const PAIR& lhs, const PAIR& rhs)
{
return lhs.second> rhs.second;
};*/
//模板仿函数
template<class T>
class HighToLow
{ public:
bool operator()(const T& lhs, const T& rhs)
{
return rhs.second<lhs.second;
}
};
template<class T>
class LowToHigh
{ public:
bool operator()(const T& lhs, const T& rhs)
{
return rhs.second>lhs.second;
}
};
//仿函数
/*
class HighToLow
{ public:
bool operator()(const PAIR& lhs, const PAIR& rhs)
{
return rhs.second<lhs.second;
}
};
class LowToHigh
{ public:
bool operator()(const PAIR& lhs, const PAIR& rhs)
{
return rhs.second>lhs.second;
}
};
*/
int main()
{
int num;
int a;
cin>>num>>a;
string name;
int score;
int i;
vector<pair<string,int>> nameScore;
for(i=0;i<num;i++)
{
cin>>name;
cin>>score;
nameScore.push_back(make_pair(name,score));
}
switch(a)
{
//模板型仿函数
case 0:sort(nameScore.begin(),nameScore.end(),HighToLow<PAIR>());break;
case 1:sort(nameScore.begin(),nameScore.end(),LowToHigh<PAIR>());break;
//仿函数
/*
case 0:sort(nameScore.begin(),nameScore.end(),HighToLow());break;
case 1:sort(nameScore.begin(),nameScore.end(),LowToHigh());break;
*/
//函数
/*
case 0:sort(nameScore.begin(),nameScore.end(),HighToLow);break;
case 1:sort(nameScore.begin(),nameScore.end(),LowToHigh);break;
*/
default:break;
}
for(i=0;i<num;i++)
{
cout<<nameScore[i].first<<" "<<nameScore[i].second<<endl;
}
return 0;
}