2252: 找和最接近但不超过K的两个元素

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

在一个长度为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[1010],n,k,ans,d=2000;
int main(){
    cin>>n>>k;
    for (int i=1;i<=n;i++) {
    	cin>>a[i];
	}
	for (int i=1;i<=n-1;i++) {
		for (int j=i+1;j<=n;j++) {
			if (a[i]+a[j]<=k&&k-a[i]-a[j]<d) {
				d=k-a[i]-a[j];
				ans=a[i]+a[j];
			}
		}
	}
    
    cout<<ans;
	return 0;
}