Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from decimal import Decimal
- read_ints = lambda : map(int, raw_input().split())
- def valid(transmitters, D):
- a = transmitters[0][1] - D
- b = transmitters[0][1] + D
- t = transmitters[0][0]
- for T, P in transmitters[1:]:
- A = P - D
- B = P + D
- l = abs(T - t)
- if A > b + l:
- return False
- if B < a - l:
- return False
- t = T
- a = max(A, a - l)
- b = min(B, b + l)
- assert a <= b
- return True
- def solve():
- N = read_ints()[0]
- transmitters = []
- for n in range(N):
- P, T = read_ints()
- transmitters.append((Decimal(T), Decimal(P)))
- transmitters.sort()
- lower = Decimal(0)
- upper = max(t[0] for t in transmitters) - min(t[0] for t in transmitters)
- #i = 0
- #while not valid(transmitters, i):
- # i += 1
- while upper - lower > Decimal(1) ** (-10):
- mid = lower + (upper - lower) / Decimal(2)
- if valid(transmitters, mid):
- upper = mid
- else:
- lower = mid
- return str(lower)
- N = read_ints()[0]
- for n in range(1, N+1):
- print 'Case #%d: %s' % (n, solve())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement