Pagini recente » Cod sursa (job #1955206) | Cod sursa (job #1030097) | Cod sursa (job #1499352) | Cod sursa (job #411534) | Cod sursa (job #2609499)
def cmmdc(a, b):
a = abs(a)
b = abs(b)
while b != 0:
r = a % b
a = b
b = r
return a
f = open("trapez.in")
n = int(f.readline())
puncte = []
for i in range(n):
l = f.readline().split()
puncte.append((int(l[0]),int(l[1])))
f.close()
pante = []
for i in range(len(puncte)):
for j in range(i + 1, len(puncte)):
dx = puncte[j][0] - puncte[i][0]
dy = puncte[j][1] - puncte[i][1]
if dy == 0:
pante.append((dy, dx))
elif dx == 0:
pante.append((float("inf"), dx))
else:
c = cmmdc(dx, dy)
dx = dx // c
dy = dy // c
if dx < 0:
dx = -dx
dy = -dy
pante.append((dy, dx))
pante.sort()
rez = 0
for i in range(len(pante)):
nr = 1
if pante[i][0] == 0:
while i + 1 < len(pante) and pante[i + 1][0] == 0:
nr = nr + 1
i = i + 1
rez += (nr * (nr - 1)) // 2
elif pante[i][0] == float("inf"):
while i + 1 < len(pante) and pante[i + 1][0] == float("inf"):
nr = nr + 1
i = i + 1
rez += (nr * (nr - 1)) // 2
else:
while i + 1 < len(pante) and pante[i + 1] == pante [i]:
nr = nr + 1
i = i + 1
rez += (nr * (nr - 1)) //2
f = open("trapez.out","w")
f.write(str(rez))
f.close()