标签:个数 ret clu cin 数列 结束 rcp open 快排
对于给定的一列数字,数字个数为偶数,你需要解决如下问题:
将给定的数列中的数字两两配对,这样每一对数字的和将形成一个新数列,对于不同的配对方法,新数列中的最大值也不同,寻找一个好的配对方法,使得新数列中的最大值最小。
第一行一个整数n(n<=10000)。第二行有n个正整数,为给定的一列数字(数字均小于maxint div 2)。
一个正整数,新数列中的最大值的最小值。
4
1 5 2 8
9
1与8配对 2与5配对 结果为9(1+8)。
先将数列进行排序,将数列中最大的数与最小的数相加,将相加后的最大值进行存储,最后得到的值即为最大值的最小值。(此题巨水,但是我还是做错了……少了一个头文件,成功爆零)
#include<iostream>
#include<algorithm>
#include<cstdio>//头文件(一定要检查!)
using namespace std;
int n,a[10005],b=0;
int main()
{
// freopen("number.in","r",stdin);
// freopen("number.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);//将数列进行输入
sort(a,a+n+1);//快排
for(int i=1;i<=n/2;i++)
b=max(b,a[i]+a[n-i+1]);//b存储最大值的最小值(好别扭的说法QWQ)
cout<<b<<endl;//将结果进行输出
return 0;//结束
}
标签:个数 ret clu cin 数列 结束 rcp open 快排
原文地址:https://www.cnblogs.com/Kyriech-Francis/p/12876749.html