Top.Mail.Ru
Ответы

Помогите решить задачу на с++. Не пойму почему не работает код

Узник замка Иф

За многие годы заточения узник замка Иф проделал в стене прямоугольное отверстие размером 𝐷×𝐸. Замок Иф сложен из кирпичей размером 𝐴×𝐵×𝐶. Определите, сможет ли узник выбрасывать кирпичи в море через это отверстие, если стороны кирпича должны быть параллельны сторонам отверстия.

Входные данные

Программа получает на вход числа 𝐴, 𝐵, 𝐶, 𝐷, 𝐸. Все числа натуральные, не превосходящие 10000.

Выходные данные

Программа должна вывести слово YES или NO.
Примеры

Ввод
Вывод
1
1
1
1
1
YES

2
2
2
1
1
NO


Моя идея в том чтобы сравнить площадь отверстия и если она меньше площади каждой из сторон, то выводим NO. Но код не проходит тест.
Решения с сравнениями длин сторон видел, но хотелось бы довести свое решение до конца(если такое возможно):

#include <iostream>
using namespace std;
int main(){
long long a, b, c, d, e;
cin>>a>>b>>c;
cin>>d>>e;
if (d*e<a*b && d*e<a*c && d*e<b*c){
cout<<"NO";
}
else{
cout<<"YES";
}
return 0;
}

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
1мес

Использовать только площади не получится: разные сочетания длин дают одинаковую площадь. Нужна именно проверка длин сторон.

123456789101112131415161718
 #include <bits/stdc++.h> 
using namespace std; 
 
int main() { 
    long long A, B, C, D, E; 
    if (!(cin >> A >> B >> C >> D >> E)) return 0; 
 
    long long brick[3] = {A, B, C}; 
    long long hole [2] = {D, E}; 
 
    sort(brick, brick + 3);   // brick[0] <= brick[1] <= brick[2] 
    sort(hole , hole  + 2);   // hole [0] <= hole [1] 
 
    if (brick[0] <= hole[0] && brick[1] <= hole[1]) 
        cout << "YES\n"; 
    else 
        cout << "NO\n"; 
} 
Аватар пользователя
Высший разум
1мес
12345678910111213141516171819202122232425262728293031323334353637383940414243
 #include <iostream> 
#include <set>

using namespace std;

struct Brick { 
    multiset<unsigned> sides; 
    friend istream& operator>>(istream& inp, Brick& brick) { 
        brick.sides.clear(); 
        unsigned side; 
        for (size_t i = 0; i < 3; ++i) { 
            inp >> side; 
            brick.sides.insert(side); 
        } 
        return inp; 
    } 
};

struct Hole { 
    multiset<unsigned> sides; 
    friend istream& operator>>(istream& inp, Hole& hole) { 
        hole.sides.clear(); 
        unsigned side; 
        for (size_t i = 0; i < 2; ++i) { 
            inp >> side; 
            hole.sides.insert(side); 
        } 
        return inp; 
    } 
    bool is_passes(const Brick& brick) { 
        auto it_hole = sides.begin(); 
        auto it_brick = brick.sides.begin(); 
        return *it_brick <= *it_hole 
            && *next(it_brick) <= *next(it_hole); 
    } 
};

int main() { 
    Brick brick; 
    Hole hole; 
    cin >> brick >> hole; 
    puts(hole.is_passes(brick) ? "YES" : "NO"); 
} 
Аватар пользователя
Искусственный Интеллект
1мес

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int k[5]; cout<<"A B C D E: ";
for(int &i:k)cin>> i; sort(k,k+3); sort(k+3,k+5);
cout<<(k[1]<=k[4]&&k[0]<=k[3]?"YES":"NO")<<endl;}

Подсчет площадей решения не даст.

Аватар пользователя
Гуру
1мес

Узник замка Иф не выбрался через подкоп. Он выбрался через смерть.

Аватар пользователя
Гений
1мес

Я уже подозреваю, что тексты задач пишет нейросеть.