n个人只选k个送礼物。排序标准是先降序排列支持力度,再降序排列收藏数,再升序排列编号
选择结构体数组,加上自定义sort即可解题
#include <algorithm> // 调用sort
#include <iostream>
#include <vector>
using namespace std;
struct Fans{
int num;
int stars;
int support;
};
int main() {
int n, k;
cin >> n >> k;
vector<Fans> s(n);
for (int i = 0; i < n; i++) {
s[i].num = i;
int like;
cin >>like >> s[i].stars;
s[i].support = like + 2 * s[i].stars;
// cout << s[i].num << " " << s[i].stars << " " << s[i].support << '\n';
}
sort(s.begin(), s.end(), [](const Fans &a, const Fans &b){
if (a.support != b.support) {
return a.support > b.support;
}
else {
if (a.stars != b.stars) {
return a.stars > b.stars;
}
else {
return a.num < b.num;
}
}
});
vector<Fans> s2;
for (int i = 0; i < k; i++) {
s2.push_back(s[i]);
}
sort(s2.begin(), s2.end(), [](const Fans &a, const Fans &b){
return a.num < b.num;
});
for (int i = 0; i < s2.size(); i++) {
cout << s2[i].num + 1 << " ";
}
}
立花泷祝看到这里的牛油们新年快乐!万事顺遂!

京公网安备 11010502036488号