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;
}