CLB Olympic Tin học HUTECH muốn lựa chọn các đội tuyển để tham gia vòng loại ICPC 2023. Mỗi đội bao gồm 3 sinh viên, và mỗi sinh viên chỉ có thể tham gia trong 1 đội. Hiệu suất của một đội được tính bằng điểm của sinh viên có điểm cao thứ hai trong đội. Mục tiêu là lựa chọn K đội sao cho tổng hiệu suất của các đội là lớn nhất.
Để giải bài toán này, solution sử dụng một kỹ thuật thông dụng trong lập trình thi đấu, đó là sắp xếp và lựa chọn.
Cụ thể, đây là cách solution hoạt động:
if(k * 3 <= n)
, để đảm bảo rằng số lượng sinh viên đủ để tạo thành K đội. Nếu không đủ, chương trình sẽ xuất ra kết quả là 0, vì không thể lựa chọn bất kỳ đội nào.Mã nguồn tham khảo:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a.rbegin(), a.rend());
long long ans = 0;
int cnt = 0;
if(k * 3 <= n)
{
for (int i = 0; i < k; i++)
{
ans = ans + a[i*2+1];
}
}
cout << ans;
return 0;
}