57 lines
1.3 KiB
Python
Executable file
57 lines
1.3 KiB
Python
Executable file
class Star:
|
|
def __init__(self):
|
|
self.x = None
|
|
self.y = None
|
|
|
|
def dist_sqr(self, star):
|
|
return (self.x - star.x) ** 2 + (self.y - star.y) ** 2
|
|
|
|
def __repr__(self):
|
|
return str(self)
|
|
|
|
def __str__(self):
|
|
return "(" + str(self.x) + "," + str(self.y) + ")"
|
|
|
|
def print_M(M):
|
|
for i in range(len(M)):
|
|
print(M[i])
|
|
print()
|
|
|
|
def find_constellations(M, S):
|
|
for i in range(len(S)):
|
|
for j in range(i+1, len(S)):
|
|
M[i][j] = Star.dist_sqr(S[i], S[j])
|
|
M[j][i] = M[i][j]
|
|
#print(str(S[i]) + " - " + str(S[j]) + ": " + str(M[i][j]))
|
|
#print_M(M)
|
|
#print(S)
|
|
c = 0
|
|
for i in range(len(S)):
|
|
D = {}
|
|
for j in range(len(S)):
|
|
if i == j:
|
|
continue
|
|
if M[i][j] not in D:
|
|
D[M[i][j]] = 1
|
|
else:
|
|
D[M[i][j]] += 1
|
|
for k in D:
|
|
if D[k] >= 2:
|
|
c += int(D[k] * (D[k] - 1) / 2)
|
|
return c
|
|
|
|
if __name__ == "__main__":
|
|
n = int(input())
|
|
M = []
|
|
for i in range(n):
|
|
M.append([None] * n)
|
|
S = []
|
|
for i in range(n):
|
|
st = input().split()
|
|
star = Star()
|
|
star.x = int(st[0])
|
|
star.y = int(st[1])
|
|
S.append(star)
|
|
print(find_constellations(M, S))
|
|
|
|
|