zyxw
Объяснение:
Для начала придётся восстановить всю таблицу истинности этой функции (см таблицу 1)
В ней ИСТИНА соответствует логической единице, ЛОЖЬ - логическому нулю. Правее столбца с результатами - промежуточные вычисления.
В итоге видим, что всего три строчки в полученной таблице имеют логический ноль в результате, как и в условии задачи.
Остаётся среди этих трёх строк найти те, что в условии задачи.
В предпоследней строке условия всего одна логическая единица, это строка соответствует отмеченной зеленой в результирующей таблице, и там где логическая единица - столбец x.
В последней строке условия тоже x - равен 1, а это соответствует строке, отмеченной оранжевым, и по истинному значению получаем столбец y. Остаётся последнее соответствие из которой получаем столбцы z и методом исключения w.
#include <iostream>
using namespace std;
int main()
{
int A,B,C,D,E;
int HoleW=0,HoleH=0; // Ширина и высота дырки, размеры относятся друг к друку так: высота <= ширина <= длина
int BrickW=0,BrickH=0; // Ширина и высота кирпича (минимальные геометрические его размеры)
cin >> A >> B >> C >> D >> E ;
//Задаём размеры дырки
if(D>E) {HoleW = D; HoleH = E;}
else {HoleW = E; HoleH = D;}
cout << "Hole W=" << HoleW << " H=" << HoleH << "\n";
//Задаём размер кирпича (эту часть конечно можно сделать более изящно, но лень)
if(A<=B && A<=C ) {
BrickH = A;
if(B<C) BrickW = B;
else BrickW = C;
}
if(B<=A && B<=C ) {
BrickH = B;
if(A<C) BrickW = A;
else BrickW = C;
}
if(C<=A && C<=B ) {
BrickH = C;
if(A<B) BrickW = A;
else BrickW = B;
}
cout << "Brick W=" << BrickW << " H=" << BrickH << "\n";
//Сравниваем размеры дырки и кирпича
if(BrickW<=HoleW && BrickH<=HoleH) cout << "YES";
else cout << "NO";
return 0;
}