Submission #69874708


Source Code Expand

from math import lcm, sqrt


def dist(x1, y1, x2, y2):
    return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))


e = 10**-9


def calc_pos(Sx, Sy, Gx, Gy, t, dx, dy, p):
    if p >= t:
        return Gx, Gy
    return Sx + p * dx, Sy + p * dy


def solve(TSx, TSy, TGx, TGy, ASx, ASy, AGx, AGy):
    Tt = dist(TSx, TSy, TGx, TGy)
    At = dist(ASx, ASy, AGx, AGy)
    Tdx, Tdy = (TGx - TSx), (TGy - TSy)
    Adx, Ady = (AGx - ASx), (AGy - ASy)
    z = Tdx * Ady - Tdy * Adx
    f = Tdx * Adx
    g = Tdy * Ady
    Tdx /= Tt
    Tdy /= Tt
    Adx /= At
    Ady /= At
    if z == 0 and f >= 0 and g >= 0:
        t = min(Tt, At)
        TSx, TSy = TSx + t * Tdx, TSy + t * Tdy
        ASx, ASy = ASx + t * Adx, ASy + t * Ady
        Tt = dist(TSx, TSy, TGx, TGy)
        At = dist(ASx, ASy, AGx, AGy)
        Tdx, Tdy = (TGx - TSx), (TGy - TSy)
        Adx, Ady = (AGx - ASx), (AGy - ASy)
        if Tt > e:
            Tdx /= Tt
            Tdy /= Tt
        if At > e:
            Adx /= At
            Ady /= At

    def calc(p):
        Tx, Ty = calc_pos(TSx, TSy, TGx, TGy, Tt, Tdx, Tdy, p)
        Ax, Ay = calc_pos(ASx, ASy, AGx, AGy, At, Adx, Ady, p)
        return dist(Tx, Ty, Ax, Ay)

    l = 0
    r = max(Tt, At)
    while r - l > e:
        d = (r - l) / 3
        ln = l + d
        rn = ln + d
        lv = calc(ln)
        rv = calc(rn)
        if lv <= rv:
            r = rn
        if rv <= lv:
            l = ln

    return calc(l)


def main():
    T = int(input())
    for t in range(T):
        TSx, TSy, TGx, TGy = map(int, input().split())
        ASx, ASy, AGx, AGy = map(int, input().split())
        ans = solve(TSx, TSy, TGx, TGy, ASx, ASy, AGx, AGy)
        print(ans)


main()

Submission Info

Submission Time
Task E - Closest Moment
User mo12412
Language Python (PyPy 3.10-v7.3.12)
Score 0
Code Size 1789 Byte
Status WA
Exec Time 1220 ms
Memory 90624 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 450
Status
AC × 1
AC × 1
WA × 10
Set Name Test Cases
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt, 02_large_05.txt, 02_large_06.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 56 ms 76584 KiB
01_small_00.txt WA 1041 ms 88784 KiB
01_small_01.txt WA 869 ms 86796 KiB
01_small_02.txt WA 992 ms 86888 KiB
02_large_00.txt WA 1216 ms 89168 KiB
02_large_01.txt WA 1210 ms 90624 KiB
02_large_02.txt WA 1114 ms 87692 KiB
02_large_03.txt WA 1109 ms 89176 KiB
02_large_04.txt WA 1220 ms 88236 KiB
02_large_05.txt WA 1139 ms 88320 KiB
02_large_06.txt WA 218 ms 87496 KiB