比赛组队
已经提交 尚未通过 时间限制:1000ms 内存限制:256MB 84.21%
提交人数:38
通过人数:32
题目描述
众所周知,ACM 的比赛需要三个人组队参与。罗老师将一个队伍的战斗力定义为三个人的战斗力总和。现在有 n n n 名参加新生赛的新生在赛后随机组队。罗老师已经调查了每个选手的战斗力,他想知道,随机组队之后,战斗力最高的队伍与战斗力最低的队伍的战斗力之差最多可能为多少。
注:一个人只能在一个队伍中,不能重复组队。
输入描述
第一行输入一个正整数 n n n ,表示选手的总数。 ( 6 ≤ n ≤ 1 0 5 ) (6≤n≤10^5) (6≤n≤105)
接下来一行包含 n n n 个用空格隔开的正整数,第 i i i 个整数 a i a_i ai 代表第 i i i 个学生的战斗力。 ( 1 ≤ a i ≤ 1 0 9 ) (1≤a_i≤10^9) (1≤ai≤109)
输出描述
输出一行一个整数代表随机组队后两队伍的最大战斗力之差。
样例输入 1
6
1 3 5 2 7 8
样例输出 1
14
提示
战斗力为 5, 7, 8 的三个人组队形成的队伍战斗力为 20。战斗力为 1, 2, 3 的三个人组队形成的队伍战斗力为 6,差值为 14。这样组队可以使得战斗力之差最大。
#include <iostream>
#include<algorithm>
bool cmp(int a,int b)
{
return a>b;
}
using namespace std;
int main(int argc, char *argv[]) {
int n;
cin>>n;
int i=0;
int *a=new int[n];
for(i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int sum1=0;
int sum2=0;
i=0;
for(i=0;i<n/2;i++)
{
sum1+=a[i];
}
int j;
for(j=n/2;j<n;j++)
{
sum2+=a[j];
}
cout<<sum2-sum1<<endl;
return 0;
}