Pagini recente » Cod sursa (job #1148534) | Cod sursa (job #810870) | Cod sursa (job #2682508) | Cod sursa (job #2722661) | Cod sursa (job #2492663)
def distanta(a,b):
return (a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])
def solutie(st,dr):
print(st,dr)
if(dr-st == 1):
return distanta(v[st],v[dr])
if(dr-st == 2):
return min(distanta(v[st],v[st+1]),distanta(v[st+1],v[dr]),distanta(v[st],v[dr]))
mij = math.floor((st+dr)/2)
minim = min(solutie(st,mij),solutie(mij+1,dr))
vector_puncte = []
for i in range(st,dr+1):
if((v[i][0]-v[mij][0])*(v[i][0]-v[mij][0]) < minim): #comparam cu punctul din mijloc pe dreapta x, punctul cel mai apropiat de dreapta verticala
vector_puncte.append(v[i])
# print(vector_puncte)
vector_puncte = sorted(vector_puncte, key=itemgetter(1))
# print(vector_puncte)
for i in range(0, len(vector_puncte)):
for j in range(i+1,i+8):
if(j >= len(vector_puncte)):
break
minim = min(minim, distanta(vector_puncte[i],vector_puncte[j]))
return minim
from operator import itemgetter
import math
f=open("T3-Pr4.txt","r")
n=int(f.readline())
v = []
for i in range(0,n):
a=f.readline()
a=a.split()
for i in range(0,2):
a[i] = int(a[i])
v.append(a)
print(v)
v = sorted(v, key=itemgetter(0))
distanta_minima = math.sqrt(solutie(0,n-1))
print(distanta_minima)