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

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

Регистрация
21 Ноя 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Яша плавает в бассейне

Яша плавал в бассейне размером 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;

}
 
Регистрация
13 Дек 2012
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
Вот это вот: n,m=m,n; делает совсем не то, что бы думаешь.
Это в Python или Go так можно значения поменять, а в С++ эта конструкция имеет абсолютно иной смысл.

Нам надо найти минимум 4 значений: x, y, длина_короткого_борта - x, длина_длинного_борта - y (до короткого борта плывём вдоль длинного, до длинного - вдоль короткого). #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});
}
 
Регистрация
16 Ноя 2013
Сообщения
97
Репутация
0
Спасибо
0
Монет
0
#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';
}
 
Регистрация
28 Сен 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
На #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;
}
 
Сверху Снизу