【模板】计数排序
题目描述
使用计数排序的方法,实现输入n个数对a[i]和b[i],输出以a[i]为主要关键字降序排列,若a[i]相等,则以b[i]降序排列后的排序结果。
输入格式
第一个一个n,表示n个数对。
接下来n行,每行两个用空格隔开的数,表示a[i]和b[i]。
输出格式
输出n行,为排列好的a[i]和b[i]。
样例 #1
样例输入 #1
10
5 9
3 5
2 4
2 2
7 3
6 2
4 5
4 7
2 6
8 6
样例输出 #1
2 2
2 4
2 6
3 5
4 5
4 7
5 9
6 2
7 3
8 6
提示
数据范围:
n<=10000,a[i]、b[i]<=1000
#include <bits/stdc++.h>
using namespace std;
int a[1010],b[1010],n;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(a[i]>a[j]&&b[i]==b[j]){
swap(a[i],a[j]);
}
if(a[i]==a[j]&&b[i]>b[j]){
swap(b[i],b[j]);
}
if(a[i]>a[j]){
swap(a[i],a[j]);
swap(b[i],b[j]);
}
}
}
for(int i=1;i<=n;i++){
printf("%d %d\n",a[i],b[i]);
}
return 0;
}```