Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import atan,sin,cos
- xs,ys,xf,yf = [int(i) for i in input().split()]
- n = int(input())
- minim = "a"
- maxim = "a"
- d = []
- for i in range(n):
- o = [int(k) for k in input().split()]
- d.append(o)
- if ys == yf:
- e = 1
- elif xs == xf:
- e = 0
- else:
- e = 0
- tg = (yf-ys)/(xf-xs)
- for i in range(n):
- x = d[i][0]
- d[i][0] = d[i][0]*cos(atan(tg)) - d[i][1]*sin(atan(tg))
- d[i][1] = x*sin(atan(tg)) + d[i][1]*cos(atan(tg))
- for i in range(n):
- o = d[i]
- r = o[2]
- y = o[e]
- if minim == "a":
- minim = y-r
- if minim > y-r:
- minim = y-r
- if maxim == "a":
- maxim = y+r
- if maxim < y+r:
- maxim = y+r
- d.sort(key=lambda o:o[e])
- pr = [minim]
- for i in range(n):
- o = d[i]
- y = o[e]
- r = o[2]
- if i != 0:
- opred = d[i-1]
- ypred = opred[e]
- rpred = opred[2]
- if y-r > ypred+rpred or y-r <= ypred-rpred:
- pr.append(y-r)
- if i != n-1:
- oposl = d[i-1]
- yposl = oposl[e]
- rposl = oposl[2]
- if y+r < yposl-rposl or y+r >= yposl+rposl:
- pr.append(y+r)
- pr.append(maxim)
- pr = sorted(list(set(pr)))
- res = 0
- for i in range(len(pr)-1):
- if i % 2 == 1:
- if pr[i+1] - pr[i] > res:
- res = pr[i+1]-pr[i]
- print(res)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement