第一轮
第一版(0/10)
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct Fans{
int id;
int like;
int star;
int support;
};
int main() {
int n, k;
cin >> n >> k;
vector<Fans> fans(n);
for(int i = 0; i < n; i++){
cin >> fans[i].like >> fans[i].star;
fans[i].id = i + 1;
fans[i].support = fans[i].like + fans[i].star * 2;
}
sort(fans.begin(), fans.end(), [](const Fans& a, const Fans& b){
if(a.support != b.support) return a.support > b.support;
else return a.id < b.id;
});
for(int i = 0; i < k; i++){
cout << fans[i].id;
}
}
// 64 位输出请用 printf("%lld")
- 重读题目,认为错在排序逻辑少了一路——支持度一样,收藏高的优先;支持和收藏都一样,编号小的优先。
第二版(0/10)
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct Fans{
int id;
int like;
int star;
int support;
};
int main() {
int n, k;
cin >> n >> k;
vector<Fans> fans(n);
for(int i = 0; i < n; i++){
cin >> fans[i].like >> fans[i].star;
fans[i].id = i + 1;
fans[i].support = fans[i].like + fans[i].star * 2;
}
sort(fans.begin(), fans.end(), [](const Fans& a, const Fans& b){
if(a.support != b.support) return a.support > b.support;
else if (a.star != b.star) {
return a.star > b.star;
}else return a.id < b.id;
});
for(int i = 0; i < k; i++){
cout << fans[i].id;
}
}
// 64 位输出请用 printf("%lld")
- 在读题目,发现输出逻辑搞错了——输出要求严格按照id排序。
第三版(0/10)
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct Fans{
int id;
int like;
int star;
int support;
};
int main() {
int n, k;
cin >> n >> k;
vector<Fans> fans(n);
for(int i = 0; i < n; i++){
cin >> fans[i].like >> fans[i].star;
fans[i].id = i + 1;
fans[i].support = fans[i].like + fans[i].star * 2;
}
sort(fans.begin(), fans.end(), [](const Fans& a, const Fans& b){
if(a.support != b.support) return a.support > b.support;
else if (a.star != b.star) {
return a.star > b.star;
}else return a.id < b.id;
});
vector<Fans> fans_k(n);
for(int i = 0; i < k; i++){
fans_k[i] = fans[i];
}
sort(fans_k.begin(), fans_k.end(), [](const Fans& a, const Fans& b){
return a.id < b.id;
});
for(int i = 0; i < k; i++){
cout << fans_k[i].id;
}
}
// 64 位输出请用 printf("%lld")
第四版(AC)
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct Fans{
int id;
int like;
int star;
int support;
};
int main() {
int n, k;
cin >> n >> k;
vector<Fans> fans(n);
for(int i = 0; i < n; i++){
cin >> fans[i].like >> fans[i].star;
fans[i].id = i + 1;
fans[i].support = fans[i].like + fans[i].star * 2;
}
sort(fans.begin(), fans.end(), [](const Fans& a, const Fans& b){
if(a.support != b.support) return a.support > b.support;
else if (a.star != b.star) {
return a.star > b.star;
}else return a.id < b.id;
});
vector<Fans> fans_k(k);
for(int i = 0; i < k; i++){
fans_k[i] = fans[i];
}
sort(fans_k.begin(), fans_k.end(), [](const Fans& a, const Fans& b){
return a.id < b.id;
});
for(int i = 0; i < k; i++){
if(i > 0) cout << " ";
cout << fans_k[i].id;
}
}
// 64 位输出请用 printf("%lld")
- 改了一下
fans_k
的初始大小。 - 最关键的改动是输出格式。
- 注意这题只需要输出id,所以没必要声明一个
vector<Fans>
类型,直接声明一个vecor<int>
即可。