题解 | 小苯送礼物
小苯送礼物
https://www.nowcoder.com/practice/466e02d2177845589ab5fa5decc2857f
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Fan {
int id; // 粉丝编号
int s; // 支持力度(赞数 + 2×收藏数)
int y; // 收藏数
};
// 排序比较函数
bool compare(const Fan& a, const Fan& b) {
if (a.s != b.s) return a.s > b.s; // 支持力度降序
if (a.y != b.y) return a.y > b.y; // 收藏数降序
return a.id < b.id; // 编号升序
}
int main() {
// ios::sync_with_stdio(false);
// cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector<Fan> fans(n);
for (int i = 0; i < n; ++i) {
int x, y;
cin >> x >> y;
fans[i].id = i + 1;
fans[i].s = x + 2 * y;
fans[i].y = y;
}
// 按规则排序
sort(fans.begin(), fans.end(), compare);
// 收集前k名粉丝的编号并升序排列
vector<int> res;
for (int i = 0; i < k; ++i) {
res.push_back(fans[i].id);
}
sort(res.begin(), res.end());
// 输出结果
for (int i = 0; i < k; ++i) {
if (i > 0) cout << ' ';
cout << res[i];
}
cout << '\n';
return 0;
}
查看8道真题和解析