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)
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)
вот что получилось у меня, но он выдает не всегда верный ответ, а сам ошибку не могу найти. может у вас получиться доработать и поделиться решением