C/C++

ВАСЯ СТРОИТ ДОМ Задача С++

Вася строит дом
Мальчик Вася живёт на координатной прямой. На этой прямой в точке A
располагается школа, а в точке B
— любимый Васин компьютерный клуб. Также в точках …,−d,0,d,…,k⋅d,…
, где k
— произвольное целое число, а d
— чётное натуральное число, расположены киоски с мороженым. Вася хочет построить дом в некоторой точке с целой координатой. При этом, ему хочется, чтобы расстояние от дома до школы и от дома до компьютерного клуба было одинаковым. Если это вдруг невозможно, то он хочет, чтобы сумма этих расстояний была как можно меньше, а также чтобы расстояния отличались как можно меньше друг от друга. Если под Васин дом подходит несколько вариантов точек, то он выберет ту, расстояние от которой до ближайшего киоска с мороженым минимально. Помогите Васе выбрать точку, где строить дом, а также выведите расстояние до ближайшего киоска с мороженым. Вася может строить дом в точке, где уже есть другие строения.

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

В единственной строке входных данных заданы три числа — A
, B
и d
. Гарантируется, что A
и B
— целые числа, по модулю не превышающие 2⋅109
, A≠B
. d
— чётное натуральное число, 2≤d≤2⋅109
.

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

В единственной строке выходных данных выведите два целых числа — координату точки, где Васе необходимо построить дом, и расстояние до ближайшего киоска с мороженым.
ВВОД
1 5 4
ВЫВОД
3 1

ВЫВОД
Находим середину. Если сумма a + b нечётная, то рассматриваем оба варианта середины, а если чётная - то середина - и есть то место, где надо строить дом.
Находим минимальное расстояние от каждой из середин до каждой из двух ближайших точек с мороженым (посредством остатка от деления). Какое расстояние меньше, в той точке и строим дом.
 #include 

using namespace std;

int main() {
long a, b, d;
cin >> a >> b >> d;
long c1 = (a + b) / 2;
long c2 = c1 + (a + b) % 2;
long k1 = min(c1 % d, d - c1 % d);
long k2 = min(c2 % d, d - c2 % d);
cout
Дима Се
Дима Се
54 053
Лучший ответ
Саша Мижалковский программа возвращает 0
 #include  
#include
using namespace std;
int main() {
long long A, B, d;
cin >> A >> B >> d;
long long x = (A + B) / 2;
cout
Кто-То Никто
Кто-То Никто
25 860
cpp
#include <iostream>
#include <cmath>

int main() {
int A, B, d;
std::cin >> A >> B >> d;

int center = (A + B) / 2;
if ((A + B) % 2 != 0) {
center = round((A + B) / 2.0);
}

int nearest_kiosk = (center / d) * d;
int distance = std::abs(center - nearest_kiosk);

std::cout << center << " " << distance << std::endl;

return 0;
}
Eldeniz Bayramov
Eldeniz Bayramov
1 189
Саша Мижалковский Спасибо , но вывод неверный(