A41790. 找和最接近但不超过K的两个元素在一个长度为n(1 < n < 1000)的整数(0至1000之间)序列中,选出两个元素使得它们的和最接近但不超过K(0 <= K < 2000)。保证一定存在不超过K的两元素和。输入第一行输入一个整数n,第二行输入一个整数K ,第三行输入序列,用空格分开。输出最接近但不超过K的和样例输入471 2 2 8样例输出4
填空题
困难
知识点
题目描述
找和最接近但不超过K的两个元素
在一个长度为n(1 < n < 1000)的整数(0至1000之间)序列中,选出两个元素使得它们的和最接近但不超过K(0 <= K < 2000)。保证一定存在不超过K的两元素和。
输入
第一行输入一个整数n,第二行输入一个整数K ,第三行输入序列,用空格分开。
输出
最接近但不超过K的和
样例输入
4
7
1 2 2 8
样例输出
4
参考答案
#include <bits/stdc++.h>
using namespace std;
int a[1005];
int main()
{
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
int i=0,j=1;
while(j<n && a[i]+a[j]<=k)j++;
j--;
while(i<j && a[i]+a[j]<=k)i++;
i--;
cout<<a[i]+a[j];
return 0;
}
上一题
下一题