Hard Way (Codeforces 1642A)
Tags: Others, geometry

Sam lives in Awesomeburg, its downtown has a triangular shape. Also, the following is true about the triangle:  its vertices have integer coordinates,  the coordinates of vertices are non-negative, and  its vertices are not on a single line. He calls a point on the downtown's border (that is the border of the triangle) safe if he can reach this point from at least one point of the line $$$y = 0$$$ walking along some straight line, without crossing the interior of the triangle.  In the picture the downtown is marked with grey color. The first path is invalid because it does not go along a straight line. The second path is invalid because it intersects with the interior of the downtown. The third and fourth paths are correct. Find the total length of the unsafe parts of the downtown border. It can be proven that these parts are segments and their number is finite.

Input: Each test contains multiple test cases. The first line contains a single integer $$$t$$$ ($$$1 \le t \le 1000$$$) — the number of test cases. Description of the test cases follows.Each test case contains three lines, each of them contains two integers $$$x_i$$$, $$$y_i$$$ ($$$0 \le x_i, y_i \le 10^9$$$) — coordinates of the vertices of the downtown's border.

Output: For each test case print a single number — the answer to the problem.Your answer will be considered correct if its absolute or relative error does not exceed $$$10^{-9}$$$. Formally let your answer be $$$a$$$, jury answer be $$$b$$$. Your answer will be considered correct if $$$\frac{|a - b|}{\max{(1, |b|)}} \le 10^{-9}$$$.

Note: In the picture, the downtowns of the first three test cases are illustrated. Triangles are enumerated according to the indices of test cases they belong to.  In the first two test cases, all points on the borders of the downtowns are safe, thus the answers are $$$0$$$.In the following picture unsafe points for the third test case are marked with black color:  In the fourth test case, all points on the border of the downtown are safe.

Sample Inputs:
5
8 10
10 4
6 2
4 6
0 1
4 2
14 1
11 2
13 2
0 0
4 0
2 4
0 1
1 1
0 0

Sample Outputs:
0.0000000
0
2.0000
0.00
1

Solution (Python):
t = int(input())
for i in range(t):
    l = []
    for j in range(3):
        (x, y) = map(int, input().split())
        l.append([x, y])
    m1 = l[1][1] - l[0][1]
    m2 = l[2][1] - l[0][1]
    m3 = l[2][1] - l[1][1]
    if m1 != 0 and m2 != 0 and (m3 != 0):
        print(0)
    else:
        if m1 == 0:
            if l[2][1] < l[1][1]:
                print(abs(l[1][0] - l[0][0]))
            else:
                print(0)
        if m2 == 0:
            if l[1][1] < l[0][1]:
                print(abs(l[2][0] - l[0][0]))
            else:
                print(0)
        if m3 == 0:
            if l[0][1] < l[1][1]:
                print(abs(l[2][0] - l[1][0]))
            else:
                print(0)

Solution (Python):
t = int(input())
while t:
    (x1, y1) = map(int, input().split())
    (x2, y2) = map(int, input().split())
    (x3, y3) = map(int, input().split())
    ans = 0
    if y1 == y2 and y3 < y1 and y1 and y2:
        ans += abs(x1 - x2)
    elif y1 == y3 and y2 < y1 and y1 and y3:
        ans += abs(x1 - x3)
    elif y2 == y3 and y1 < y2 and y3 and y2:
        ans += abs(x2 - x3)
    print(ans)
    t -= 1

Solution (Python):
t = int(input())
for _ in range(t):
    (x1, y1) = map(int, input().split())
    (x2, y2) = map(int, input().split())
    (x3, y3) = map(int, input().split())
    if y1 == y2 and y1 != 0 and (y3 < y1):
        print(abs(x1 - x2))
    elif y2 == y3 and y2 != 0 and (y1 < y2):
        print(abs(x2 - x3))
    elif y1 == y3 and y3 != 0 and (y2 < y1):
        print(abs(x1 - x3))
    else:
        print(0)