stable的作用
一句话来说,带有stable的函数可保证相等元素的原本相对次序在排序后保持不变。
一道例题
题目描述
小h是一个很有规划的人,他列了很多事情,标注了优先级(1-9)也标注了必要程度(1-5)必要程度大的排前面,必要程度一样优先级大的排前面,必要程度一样,优先级一样不改变初始顺序。因为事情太多了,所以小h需要你帮忙…
输入
第一行一个数字n表示有n个事情
后n行每行两个数字a,b表示事情的优先级和必要程度
(n<=10000)
输出
将所有事情排序输出(只输出初始序号)
样例输入 Copy
2
9 3
1 4
样例输出 Copy
2 1
#include <iostream>
#include<algorithm>
#define ll long long
using namespace std;
struct node
{
int a, b, id;
}s[10005];
bool cmp(const node& l, const node& r)
{
if (l.b != r.b)
return l.b > r.b;
else
return l.a > r.a;
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d %d", &s[i].a, &s[i].b);
s[i].id = i;
}
stable_sort(s + 1, s + 1 + n, cmp);
for (int i = 1; i <= n; i++)
printf("%d ", s[i].id);
printf("\n");
return 0;
}