Предмет: Информатика, автор: lbllblbp

Программирование, сделать задачу на С++
У вас есть стол, у которого есть 4 ножки, длины которых вам даны.

Вы хотите сделать ножки равной длины, для этого вы отпилите d от каждой ножки (т.е. вам будет дано 4 числа, каждое из которых будет означать отпил от ответной ножки стола). Если во время отпиливания самая длинная ножка стола будет в 2 раза больше, чем самая маленькая ножка – стол перевернется, но отпиливать ножки это вам не помешает.

То есть, если h max >= 2 h min то стол переворачивается. Внимание, это может произойти и между началом и концом отпиливания, например, когда отпиливают 2, но еще не успеют отпилить третью ножку. Также мы считаем, что перед отпиливанием стол не перевернется.

Ваша задача сказать после всех манипуляций стол будет целый и параллельный полу.

Если длина, которую отрежут, будет больше длины ножки - вам нужно вывести ERROR.

Внимание! Даже если стол перевернется – вы все равно отпиливаете ножки и можете получить ERROR.

Input
4 целых числа h1,2,3,4 – длины ножек стола 4 целых числа d1,2,3,4 – длина, которую отпиливают от соответствующей ножки

Output
YES – если стол будет стоять параллельно плоскости пола и длина наименьшей ножки не будет равна нулю.

ERROR - в случае если вы отпилите большую длину, чем имеет ножка

NO – в других случаях

Constraints:
0≤h1,2,3,4≤10^12
0≤d1,2,3,4≤10^12

Samples: (Примеры ввода значений для задачи)
Input (stdin):
10 10 10 10
1
1
1
1
Output (stdout):
YES


Input (stdin):
2147483648 1 1 1
1
1
1
1

Output (stdout):
NO

Input (stdin):
10 10 10 10
11
1
1
1

Output (stdout):
ERROR

Notes:
Во втором случае после первого отпиливания длина самой длинной ножки будет 10, а наименьшей 5 (5<=10/2) – стол перевернется. В третьем случае мы пытаемся отпилить длину 11 от ножки, имеющей длину 10

Ответы

Автор ответа: Alladin1337
0

Ответ: #include <iostream>

using namespace std;

int main() {

   // Ввод длин ножек

   long long h[4];

   for (int i = 0; i < 4; i++) {

       cin >> h[i];

   }

   // Ввод длин, которые отпиливаются

   long long d[4];

   for (int i = 0; i < 4; i++) {

       cin >> d[i];

   }

   // Проверка условия стола

   bool flipped = false;

   for (int i = 0; i < 4; i++) {

       if (h[i] - d[i] <= 0) {

           cout << "ERROR" << endl;

           return 0;

       }

       if (h[i] >= 2 * (h[(i + 1) % 4] - d[(i + 1) % 4])) {

           flipped = true;

       }

   }

   if (flipped) {

       cout << "NO" << endl;

   } else {

       cout << "YES" << endl;

   }

   return 0;

}

Автор ответа: illyakohtyuk211
0

Объяснение:

```cpp

#include <iostream>

int main() {

// Ввод длин ножек

long long h[4];

for (int i = 0; i < 4; ++i) {

std::cin >> h[i];

}

// Ввод длины, которую отпилят от соответствующей ножки

long long d[4];

for (int i = 0; i < 4; ++i) {

std::cin >> d[i];

}

// Проверка условий

if (h[0] >= 2 * h[1] && h[0] >= 2 * h[2] && h[0] >= 2 * h[3]) {

// Если стол перевернется после первого отпиливания, выводим YES

std::cout << "YES" << std::endl;

} else {

// Иначе, проверяем длину, которую отрежут, чтобы избежать ERROR

long long min_length = h[0];

for (int i = 0; i < 4; ++i) {

min_length = std::min(min_length, h[i] - d[i]);

}

// Вывод результата

if (min_length < 0) {

std::cout << "ERROR" << std::endl;

} else {

std::cout << "NO" << std::endl;

}

}

return 0;

}

```

Примеры ввода и вывода соответствуют условиям задачи.

Похожие вопросы
Предмет: Кыргыз тили, автор: asylbekovaadina472
Предмет: Литература, автор: benazirasanova86