C++工程師養成 每日一題

題目:ios

連接:https://www.nowcoder.com/questionTerminal/6736cc3ffd1444a4a0057dee89be789b?orderByHotValue
來源:牛客網

牛牛舉辦了一次編程比賽,參加比賽的有3*n個選手,每一個選手都有一個水平值a_i.如今要將這些選手進行組隊,一共組成n個隊伍,即每一個隊伍3人.牛牛發現隊伍的水平值等於該隊伍隊員中第二高水平值。
例如:
一個隊伍三個隊員的水平值分別是3,3,3.那麼隊伍的水平值是3
一個隊伍三個隊員的水平值分別是3,2,3.那麼隊伍的水平值是3
一個隊伍三個隊員的水平值分別是1,5,2.那麼隊伍的水平值是2
爲了讓比賽更有看點,牛牛想安排隊伍使全部隊伍的水平值總和最大。
如樣例所示:
若是牛牛把6個隊員劃分到兩個隊伍
若是方案爲:
team1:{1,2,5}, team2:{5,5,8}, 這時候水平值總和爲7.
而若是方案爲:
team1:{2,5,8}, team2:{1,5,5}, 這時候水平值總和爲10.
沒有比總和爲10更大的方案,因此輸出10.編程

 

 

解答代碼:(此博客上所發全部代碼均爲純手打,因此不免失誤,求大佬們多指錯<  __   __  >)spa

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
int n;
long long sum=0;
vector<int> s;
cin >> n;
s.resize(3 * n);
for (int i = 0; i < 3 * n; ++i){
cin >> s[i];
}
sort(s.begin(), s.end());
for (int i = n; i <= 3 * n-2; i+=2){
sum += s[i];
}
for (int e : s){
cout << e<< ' ';
}
cout << endl;
cout << sum;
return 0;
}
相關文章
相關標籤/搜索