题解 | #组队竞赛#
【题目解析】:
首先明确,队伍的水平就是队伍成员水平的第二高,第二高意味着要排序,最后一个必然是从后开始选,第一个必然是从开始选,那么第二高当然是从后面选。一个队伍三个成员,即从开始选一个,从后面选两个。然后继续从剩下的数里选。 要的结果是输出一个sum,则只需要推出这个公式即可。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n;cin>>n;
vector<int> v(3*n);
for(int i = 0; i< v.size();++i)
{
cin>>v[i];
}
sort(v.begin(),v.end());
long sum = 0;
for(int i = 0; i < n; ++i)
{
sum += v[v.size()-(2*(i+1))]; //i是从0开始的,就要+1,也可以i从1开始,就不需要了
}
cout<<sum<<endl;
return 0;
}