链接:登录—专业IT笔试面试备考平台_牛客网https://ac.nowcoder.com/acm/contest/18839/1036
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld
题目描述
Compute, Cubercsl, SuperSodaSea, Ybmj 准备组队参加 "科大讯飞" 赞助的 CrossFire 比赛。
科大讯飞股份有限公司成立于1999年,是亚太地区知名的智能语音和人工智能上市企业。自成立以来,长期从事语音及语言、自然语言理解、机器学习推理及自主学习等核心技术研究并保持了国际前沿技术水平;积极推动人工智能产品研发和行业应用落地,致力让机器"能听会说,能理解会思考",用人工智能建设美好世界。
这场比赛需要两人一队组队参加,他们不知道怎么分组。已知他们的 CrossFire 分数分别为 a, b, c, d,现在想要把他们两两分为一队,使得他们的实力比较平均,也就是两队的实力差尽量小。
这里定义两队的实力差为每队的 CrossFire 分数之和的差值,现在他们想要知道这个实力差最小是多少。
输入描述
仅一行,包含四个整数 a, b, c, d (1≤a,b,c,d≤3681),中间以空格分隔,分别表示四个人的 CrossFire 分数。
输出描述
在一行输出一个整数,表示两个队伍实力差的最小值。
示例1
输入
2 1 3 4
输出
0
示例2
输入
2263 2110 2172 2109
输出
90
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[4];
for(int i=0;i<=3;i++)
{
cin>>a[i];
}
sort(a,a+4);
int s=a[0]-a[1]+a[3]-a[2];
cout<<(s>0?s:-s);//考虑最后s是否为正数,如果s是负数需要处理输出正数
return 0;
}
题解:
题目给出四个数据,存入数组排序过后,可以肯定前两个数相减与后两个数相减得到的差是最小的,但是最后需要考虑结果的正负,才可以得到正确答案。