Анализ алгоритма
Пусть – длина, – ширина, – высота шкафа. Шкаф можно пронести в проем двери одной из трех сторон: передом (прямоугольник должен входить в ), боком (прямоугольник должен входить в ) или верхом (прямоугольник должен входить в ).
Прямоугольник входит в , если выполняется одно из условий:
и
и
Реализация алгоритма
Читаем входные данные. Установим переменной 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")