问题描述:
解题思路:
可以使用结构体数组并排序,需要注意的是结构体数组不能直接使用sort进行排序,要自己写cmp函数。
结构体的cmp具体写法:
bool cmp(book a, book b) { // 结构体类型名做参数
if (a.w == b.w) return a.id < b.id; // 当权重相同,按ID排序
return a.w < b.w;
}
题解:
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 9;
struct book{
int id, w;
};
bool cmp(book a, book b) {
if (a.w == b.w) return a.id < b.id; // 当权重相同,按ID排序
return a.w < b.w;
}
book a[N];
int main()
{
int n;cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i].id >> a[i].w;
}
sort(a + 1, a + n + 1,cmp);
for(int i = 1; i <= n; i++)
cout << a[i].id << '\n';
return 0;
}
知识点:结构体数组的排序