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.

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

There are no comments at the moment.