题目:
思路:
将数组排好序,找出最大值,第二大值及第三大值。如果最大值小于第二大值加第三大值,则为YES;否则为NO。过程很简单,但我不知道为什么。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int cmp(const long long &a, const long long &b){
return a > b;
}
int main(){
int total;
cin >> total;
for (int i = 0; i < total; ++i){
int n;
cin >> n;
vector<long long> vec;
for (int j = 0; j < n; ++j){
long long t; cin>>t;
vec.push_back(t);
}
sort(vec.begin(), vec.end(), &cmp);
bool flag = true;
if (vec[0] < vec[1] + vec[2]){
flag = true;
}else{
flag = false;
}
if (flag){
cout << "YES" << endl;
}else{
cout << "NO" << endl;
}
}
}
参考:https://www.nowcoder.com/questionTerminal/4b9d1cde452d43a282fad4ff8b2559ea