Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Валерия Петрова . Ученик (20), закрыт 4 месяца назад
Яша плавает в бассейне
Яша плавал в бассейне размером 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;
}
Лучший ответ
Николай Веселуха Высший разум (375136) 4 месяца назад
 #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';
}
ПапаВысший разум (148852) 2 недели назад
Яша плавает в бассейне, и ему там хорошо.
Только школьникам-Эйнштейнам си с плюсами не нужОн.
Николай Веселуха Высший разум (375136) Папа, ранний вопрос об этой задаче был найден мною 13 лет тому назад. У меня два варианта ответа к нынешнему поколению. Либо Яша стал Яковом Моисеевичем и уехал жить в Израиль, либо утонул.
Остальные ответы
Рустам Абдрашитов Мастер (1385) 4 месяца назад
На
 #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;
}
Андрей Высший разум (474238) 4 месяца назад
Вот это вот:
 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});
}
Похожие вопросы