测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题