PythonでJOI難易度6を埋める #25

4 - JOIポスター (JOI Poster)

数学感がある問題.参考にした提出細かい条件

from sys import stdin
input = stdin.readline

n, w, h = map(int, input().strip().split())
xy = [list(map(int, input().strip().split())) for _ in range(n)]

ans = 0
for i in range(n):
    for j in range(n):
        for k in range(n):
            for l in range(n):
                if len(set((i, j, k, l))) != 4:
                    continue
                o1 = (xy[i][0] - xy[j][0]) ** 2 + (xy[i][1] - xy[j][1]) ** 2
                if not ((w - xy[i][0]) ** 2 < o1 or xy[i][0] ** 2 < o1 or (h - xy[i][1]) ** 2 < o1 or xy[i][1] ** 2 < o1):
                    o2 = (xy[k][0] - xy[l][0]) ** 2 + (xy[k][1] - xy[l][1]) ** 2
                    d = (xy[i][0] - xy[k][0]) ** 2 + (xy[i][1] - xy[k][1]) ** 2
                    if o1 - o2 - d >= 0 and o2 * d * 4 < (o1 - o2 - d) ** 2:
                        ans += 1

print(ans)