from collections import Counter



import numpy as np





def part(pts, a, ans):

    b = np.dot(pts, [np.sin(a), np.cos(a)])

    c = np.argmax(b, axis=0)

    for i, v in list(Counter(c).items()):

        ans[i] += v





def solve(n, pts):

    ans = [0] * n

    part(pts, np.linspace(0, np.pi, 100000, endpoint=False), ans)

    part(pts, np.linspace(np.pi, 2 * np.pi, 100000, endpoint=False), ans)

    return [v / 200000 for v in ans]





n = int(eval(input()))

pts = np.array([list(map(int, input().split())) for _ in range(n)])

print(('\n'.join(map(str, solve(n, pts)))))

from collections import Counter

import numpy as np





def part(pts, s, t, num, ans):

    a = np.linspace(s, t, num, endpoint=False)

    for i, v in list(Counter(np.argmax(np.dot(pts, [np.sin(a), np.cos(a)]), axis=0)).items()):

        ans[i] += v





def solve(n, pts):

    ans = np.zeros(n)

    part(pts, 0, np.pi, 1e5, ans)

    part(pts, np.pi, 2 * np.pi, 1e5, ans)

    return ans / 2e5





n = int(eval(input()))

print(('\n'.join(map(str, solve(n, [list(map(int, input().split())) for _ in range(n)])))))

from collections import Counter
import numpy as np


def part(pts, a, ans):
    b = np.dot(pts, [np.sin(a), np.cos(a)])
    c = np.argmax(b, axis=0)
    for i, v in list(Counter(c).items()):
        ans[i] += v


def solve(n, pts):
    ans = [0] * n
    part(pts, np.linspace(0, np.pi, 100000, endpoint=False), ans)
    part(pts, np.linspace(np.pi, 2 * np.pi, 100000, endpoint=False), ans)
    return [v / 200000 for v in ans]


n = int(eval(input()))
pts = np.array([list(map(int, input().split())) for _ in range(n)])
print(("\n".join(map(str, solve(n, pts)))))

from collections import Counter
import numpy as np


def part(pts, s, t, num, ans):
    a = np.linspace(s, t, num, endpoint=False)
    for i, v in list(
        Counter(np.argmax(np.dot(pts, [np.sin(a), np.cos(a)]), axis=0)).items()
    ):
        ans[i] += v


def solve(n, pts):
    ans = np.zeros(n)
    part(pts, 0, np.pi, 1e5, ans)
    part(pts, np.pi, 2 * np.pi, 1e5, ans)
    return ans / 2e5


n = int(eval(input()))
print(
    ("\n".join(map(str, solve(n, [list(map(int, input().split())) for _ in range(n)]))))
)

-def part(pts, a, ans): -    b = np.dot(pts, [np.sin(a), np.cos(a)]) -    c = np.argmax(b, axis=0) -    for i, v in list(Counter(c).items()): +def part(pts, s, t, num, ans): +    a = np.linspace(s, t, num, endpoint=False) +    for i, v in list( +        Counter(np.argmax(np.dot(pts, [np.sin(a), np.cos(a)]), axis=0)).items() +    ): -    ans = [0] * n -    part(pts, np.linspace(0, np.pi, 100000, endpoint=False), ans) -    part(pts, np.linspace(np.pi, 2 * np.pi, 100000, endpoint=False), ans) -    return [v / 200000 for v in ans] +    ans = np.zeros(n) +    part(pts, 0, np.pi, 1e5, ans) +    part(pts, np.pi, 2 * np.pi, 1e5, ans) +    return ans / 2e5 -pts = np.array([list(map(int, input().split())) for _ in range(n)]) -print(("\n".join(map(str, solve(n, pts))))) +print( +    ("\n".join(map(str, solve(n, [list(map(int, input().split())) for _ in range(n)])))) +)