思路:直接找数列中最小的两个值,如果两者之和小于等于给定的d,那么数列中其他的值也一定可以通过替换从而小于等于d,若数列中最大值小于d,则直接输出yes,其他就是no
C++代码
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
int n, d;
cin >> n >> d;
int a[105];
for(int i = 0; i < n; i ++)
cin >> a[i];
sort(a,a+n);
if(a[n-1] <= d)cout << "YES"<< endl;
else if(a[0] + a[1] <= d) cout << "YES" << endl;
else cout