题目链接:
http://codeforces.com/problemset/problem/766/B
题意:
给定n个数,判断是否能够组成三角形;可以则输出YES,否则输出NO
思路:
先对n个数据进行排序,从第三个数字开始循环到第n个数字,判断数字能否和其前两个数组成三角形,一旦可以,退出循环;如果一直没能退出循环,说明这n个数都不能组成三角形
#include <iostream>
#include <algorithm>
#define rep(i, k, n) for (int i = (k); i < (n); i++)
const int N = 1e5;
using namespace std;
int n, a[N];
const string s[2] = { "NO", "YES"};
int haveFormed()
{
cin >> n;
rep(i, 0, n)
cin >> a[i];
sort(a, a + n);
rep(i, 2, n)
{
if (a[i] - a[i - 1] < a[i - 2])
return 1;
}
return 0;
}
int main()
{
cout << s[haveFormed()];
return 0;
}