某公司有 $n$ 名员工,每个员工有一个唯一的编号 $id$ 和一个工资 $salary$。现在需要对员工按照工资从高到低排序,如果工资相同,则按照编号从小到大排序。请你编写一个程序,实现这个排序功能。
输入格式:
第一行包含一个整数 $n$,表示员工数量。
接下来 $n$ 行,每行包含一个字符串 $id$ 和一个整数 $salary$,表示一个员工的编号和工资。
输出格式:
按照要求排序后,输出每个员工的编号和工资,每个员工占一行。
数据范围:
$1 \\leq n \\leq 10^5$,$0 \\leq salary \\leq 10^9$,$id$ 由不超过 8 个英文字母组成。
输入样例:
```
3
b 100
a 100
c 50
```
输出样例:
```
a 100
b 100
c 50
```
算法1
(排序) $O(nlogn)$
时间复杂度
参考文献
python3 代码
C++ 代码
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码

算法1
(排序) $O(nlogn)$
先按照工资从高到低排序,如果工资相同,则按照编号从小到大排序。
时间复杂度
参考文献
python3 代码
```python
n = int(input())
data = []
for i in range(n):
id, salary = input().split()
data.append((id, int(salary)))
data.sort(key=lambda x: (-x, x[0]))
for id, salary in data:
print(id, salary)
```
C++ 代码
```cpp
#include
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;
vector
for (int i = 0; i < n; i++)
{
cin >> data[i].first >> data[i].second;
}
sort(data.begin(), data.end(), [](const pair
if (a.second != b.second)
{
return a.second > b.second;
}
return a.first < b.first;
});
for (auto& d : data)
{
cout << d.first << \
