Шафа#1312

Шафа (Розбір)

Аналіз алгоритму

Нехай – довжина, – ширина, – висота шафи. Шафу можна пронести в пройом дверей однією з трьох сторін: передом (прямокутник a \times c повинен входити в x \times y), боком (прямокутник b \times c повинен входити в x \times y) або верхом (прямокутник a \times b повинен входити в x \times y).

Прямокутник a \times b входить в x \times y, якщо виконується одна з умов:

Реалізація алгоритму

Читаємо вхідні дані. Встановимо змінній flag значення 0. Перебираємо всі три можливих розташування шафи в пройомі дверей. Якщо хоча б при одному з них шафа пройде в двері, встановимо flag = 1.

scanf("%d %d %d %d %d", &a, &b, &c, &x, &y);
flag = 0;
if (((a <= x) && (b <= y)) || ((b <= x) && (a <= y))) flag = 1;
if (((b <= x) && (c <= y)) || ((c <= x) && (b <= y))) flag = 1;
if (((a <= x) && (c <= y)) || ((c <= x) && (a <= y))) flag = 1;

Залежно від значення flag виводимо відповідь.

if (flag == 1)
    printf("YES\n");
else
    printf("NO\n");

Друге рішення. Задачу можна вирішити за допомогою однієї складної умови.

scanf("%d %d %d %d %d", &a, &b, &c, &x, &y);
if (((a <= x) && (b <= y)) || ((b <= x) && (a <= y)) ||
    ((b <= x) && (c <= y)) || ((c <= x) && (b <= y)) ||
    ((a <= x) && (c <= y)) || ((c <= x) && (a <= y)))
    printf("YES\n");
else
    printf("NO\n");

Java реалізація

import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        Scanner con = new Scanner(System.in);
        int a = con.nextInt();
        int b = con.nextInt();
        int c = con.nextInt();
        int x = con.nextInt();
        int y = con.nextInt();

        int flag = 0;
        if (((a <= x) && (b <= y)) || ((b <= x) && (a <= y))) flag = 1;
        if (((b <= x) && (c <= y)) || ((c <= x) && (b <= y))) flag = 1;
        if (((a <= x) && (c <= y)) || ((c <= x) && (a <= y))) flag = 1;
        if (flag == 1)
            System.out.println("YES");
        else
            System.out.println("NO");

        con.close();
    }
}

Python реалізація

a, b, c, x, y = map(int, input().split())
if (a <= x and b <= y) or (b <= x and a <= y) or (b <= x and c <= y) or (c <= x and b <= y) or (a <= x and c <= y) or (c <= x and a <= y):
    print("YES")
else:
    print("NO")