Tam giác không cân

Xem PDF

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Để tham gia câu lạc bộ Origami của trường, Huy phải:

"Viết chương trình kiểm tra xem 3 số nguyên dương nhập vào có thể là 3 cạnh của một tam giác KHÔNG cân hay không."

Vì laptop của Huy đã bị hỏng, bạn hãy giúp Huy giải bài tập trên. Biết rằng tam giác đều là tam giác cân.

Input

  • Một dòng duy nhất gồm 3 số nguyên dương \(a,b,c \left(a,b,c\leq 10^{18}\right)\)

Các số trên một dòng của input file được ghi cách nhau bởi dấu cách

Output

  • Ghi ra "YES" nếu 3 số nguyên dương là 3 cạnh của của một tam giác KHÔNG cân, ngược lại in ra "NO"

Example

Test 1

Input
3 4 5 
Output
YES
Note

Bình luận


  • 5
    SPyofgame    1:45 p.m. 9 Tháng 6, 2020 chỉnh sửa 7

    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;
    }
    

    • 1
      Small    2:24 p.m. 9 Tháng 6, 2020

      Cảm ơn bạn. Đã đưa vào hướng dẫn của bài Editorial

      4 bình luận nữa