写三个循环或者dfs枚举六选三判断即可。为了方便,我直接用的stl全排列枚举,这样就不用写三个循环或者dfs了,虽然时间复杂度会升至O(n!),但是n仅为6比较小,对于此题完全可以解决。每次枚举到的时候,我们不妨取前三个是一个“三角形”,后三个是一个“三角形”,看这两“三角形”是否合法即可。总的时间复杂度为O(6! * T)。

#include <iostream>
#include <vector>
#include <algorithm>

void solve(){
  std::vector<int> a(6);
  for(int i = 0; i < 6; i++){
    std::cin >> a[i];
  }

  std::sort(a.begin(), a.end());

  do{
    std::vector<int> b(a.begin(), a.begin() + 3);
    std::vector<int> c(a.begin() + 3, a.end());

    std::sort(b.begin(), b.end());
    std::sort(c.begin(), c.end());

    if(b[0] + b[1] > b[2] && c[0] + c[1] > c[2]){
      std::cout << "Yes\n";
      return;
    }
  }while(std::next_permutation(a.begin(), a.end()));

  std::cout << "No\n";
}

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  std::cout.tie(nullptr);

  int T = 1;
  std::cin >> T;

  for(int i = 0; i < T; i++){
    solve();
  }

  return 0;
}