Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Сириус говорит, мол программа выдаёт неправильный ответ(через min не принимает)

Яша плавает в бассейне
Яша плавал в бассейне размером N×M
метров и устал. В этот момент он обнаружил, что находится на расстоянии x
метров от одного из длинных бортиков (не обязательно от ближайшего) и y
метров от одного из коротких бортиков. Какое минимальное расстояние должен проплыть Яша, чтобы выбраться из бассейна на бортик? Обратите внимание, что изначально неизвестно, какой из бортиков (длиной N
или M
метров) является коротким.

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

Вводятся 4
натуральных числа: N
, M
, x
, y
(N≠M)
, каждое на отдельной строке. Все числа не превосходят 100
.

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

Программа должна вывести число метров, которое нужно проплыть Яше до бортика.

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,m,x,y;
cin >> n >> m >> x>>y;
if (n>m) {
n,m=m,n;
}
if (x>=n/2) {
x=n-x;
}
if (y>=m/2) {
y=m-y;
}
if (x>y) {
cout<<y;
}else{
cout<<x;
}
return 0;
}

По дате
По рейтингу
Аватар пользователя
Новичок
9мес
123456789101112
 #include <iostream> 
using namespace std; 
int main() { 
    int n, m, x, y; 
    cin >> n >> m >> x >> y; 
    auto a = n < m ? n : m; 
    auto b = m < n ? n : m; 
    auto bx = b - x < x ? b - x : x; 
    auto ay = a - y < y ? a - y : y; 
    auto target = bx < ay ? bx : ay; 
    cout << target << '\n';  
} 
Аватар пользователя
Высший разум
9мес

Вот это вот:

1
 n,m=m,n; 

делает совсем не то, что бы думаешь.
Это в Python или Go так можно значения поменять, а в С++ эта конструкция имеет абсолютно иной смысл.

Нам надо найти минимум 4 значений: x, y, длина_короткого_борта - x, длина_длинного_борта - y (до короткого борта плывём вдоль длинного, до длинного - вдоль короткого).

12345678910
 #include <iostream> 
#include <algorithm> 
 
using namespace std; 
 
int main() { 
  int n, m, x, y; 
  cin >> n >> m >> x >> y; 
  cout << min({x, y, min(n, m) - x, max(n, m) - y}); 
} 
Аватар пользователя
Мастер
9мес

На

1234567891011121314
 #include <iostream> 
using namespace std; 
 
int main() { 
    int n, m, x, y; 
    cin >> n >> m >> x >> y; 
 
    int distance_to_long_edge = min(x, n - x); 
    int distance_to_short_edge = min(y, m - y); 
     
    cout << min(distance_to_long_edge, distance_to_short_edge) << endl; 
 
    return 0; 
} 
Аватар пользователя
Просветленный
9мес

Всё потому, что Яша Лава