Editorial for Tam giác không cân
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Spoiler Alert
Hint 1
Tìm điều kiện tam giác và loại bỏ điều kiện để nó cân, từ đó suy ra kết quả
Hint 2
Điều kiện độ dài các cạnh: (a > 0) && (b > 0) && (c > 0)
Điều kiện để tạo tam giác: (a + b > c) && (b + c > a) && (c + a > b)
Điều kiện để tam giác cân: (a == b) || (b == c) || (c == a)
Hint 3
Điều kiện tam giác không cân: ((a > 0) && (b > 0) && (c > 0)) && ((a + b > c) && (b + c > a) && (c + a > b)) && !((a == b) || (b == c) || (c == a))
Reference AC code | \(O(1)\) time | \(O(1)\) auxiliary space | Math
C++
int main()
{
ll a, b, c;
cin >> a >> b >> c;
bool ok1 = (a > 0) && (b > 0) && (c > 0);
bool ok2 = (a + b > c) && (b + c > a) && (c + a > b);
bool ok3 = (a == b) || (b == c) || (c == a);
cout << ((ok1 && ok2 && !ok3) ? "YES" : "NO");
return 0;
}
Hint 4
Bạn cũng có thể sắp xếp các cạnh để có công thức toán học gọn hơn
Reference AC code | \(O(1)\) time | \(O(1)\) auxiliary space | Math
C++
ll max(ll a, ll b) { return a > b ? a : b; }
ll min(ll a, ll b) { return a < b ? a : b; }
ll med(ll a, ll b, ll c) { return max(min(a, b), min(c, max(a, b))); }
int main()
{
ll a, b, c;
cin >> a >> b >> c;
tie(a , b , c) = make_tuple( max(a, max(b, c)) , med(a, b, c) , min(a, min(b, c)) );
cout << ((a > b && b > c && c > 0 && b + c > a) ? "YES" : "NO");
return 0;
}
Reference AC code | \(O(1)\) time | \(O(1)\) auxiliary space | Math
C++
int main()
{
ll a, b, c;
cin >> a >> b >> c;
if (a < b) swap(a, b); if (a < c) swap(a, c); if (b < c) swap(b, c); /// sort 3 so
cout << ((a > b && b > c && c > 0 && b + c > a) ? "YES" : "NO");
return 0;
}
Comments