三角形较大的两边之差必然小于第三边; 要尽可能找解,即找到A-B>C且(A>B>C); 那么A要尽可能大(取最大的); B尽可能小,C尽可能大————>导致B和C是相邻的(排序后); A固定,遍历B,C相邻情况即可;
using namespace std;
int main()
{
int n;
int ans[4];
ans[3] = 0;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
sort(arr.begin(), arr.end());
for (int i = n - 2; i > 0; i--)
{
if (arr[n - 1] - arr[i] < arr[i - 1])
{
ans[0] = arr[n - 1];
ans[1] = arr[i - 1];
ans[2] = arr[i];
ans[3] = 1;
break;
}
}
if (ans[3])
printf("%d %d %d\n", ans[0], ans[1], ans[2]);
else
cout << "No solution" << endl;
return 0;
}