Помогите решить по информатике питон - Общение Python мододелов

Вопрос Помогите решить по информатике питон

Регистрация
18 Май 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Качели





Ограничение по времени: 0.5 секунды

Ограничение по памяти: 256 мегабайт





Трое друзей - Аня, Боря и Саша

пришли на детскую площадку, чтобы

покачаться на качелях-балансире





Качели представляют собой длинную

балку, закреплённую в центре

на которую дети садятся с разных





концов.





Массы детей равны А, В и С кг. Чтобы

держать баланс на качелях, разница

масс на двух концах качелей должна

быть не более Д кг. Друзьям повезло:

рялом с площадкой оказалась груда

аточно тяжёлых камней. Один

из детей может взять с собой любой камень, чтобы сделать разность масс





на концах качелей допустимой





Помогите друзьям определить





минимальную массу камня, благодаря

которому они смогут покачаться





на качелях.





Формат входных данных





Программа получает на вход три числа

А, В, С, записанных в отдельных

строках, — массы друзей. В четвёртой

строке записано число D

наибольшая допустимая разница масс

на концах качелей. Все числа целые,





положительные





и не превосходящие 109,





Формат выходных данных





Программа должна вывести одно целое

число

минимально необходимую

у камня, которую нужно добави

на одну из сторон качелей, чтобы друзья смогли покачаться на них, сев





оптимально. Если камень им





не понадобится, программа должна

вывести число O.





Система оценки





Решения, правильно работающие, когда

все входные числа не превосходят 105

будут оцениваться в 40 баллова





Замечание





В первом примере Аня и Саша сядут





на одну сторону, их суммарная масса

будет равна 65 кг. На другую сторону

сядет Боря, взяв 15-килограммовый

камень, тогда масса Бори с камнем

составит 55 кг. Разница весов на концах

качелей примет значение 10 кг.

Во втором примере Аня и Боря сядут

одну сторону (50 кг), Саша

ругую сторону (45 кг). Разница

весов будет равна 5 кг, поэтому камень не понадобится
 
Регистрация
6 Окт 2013
Сообщения
72
Репутация
0
Спасибо
0
Монет
0
m = sorted([int(input()) for i in range(3)] + [0])
d = int(input())
l = -1
r = abs(2 * m[-1] - sum(m))
while r - l > 1:
m[0] = (l + r) // 2
for mask in range(16):
s = 0
for i in range(4):
if mask & 1 != False:
s += m
else:
s -= m
mask >>= 1
if d >= s >= -d:
r = m[0]
break
else:
l = m[0]
print(r)
 
Регистрация
3 Сен 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
a = int(input())
b = int(input())
c = int(input())
d = int(input())
res = 0
maxs = max(a, max(b, c))
prav = a + b + c - maxs
if prav - maxs < d:
print(res)
else:
while prav - maxs > d:
res = res + 1
maxs += 1
print(res)

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