Cod sursa(job #2486409)

Utilizator aandreiAndrei Stanimir aandrei Data 2 noiembrie 2019 20:31:55
Problema Cele mai apropiate puncte din plan Scor 10
Compilator py Status done
Runda Arhiva educationala Marime 1.14 kb
import math
class Point:
    def __init__(self,x_init,y_init):
        self.x = x_init
        self.y = y_init
    def __eq__(self, p2):
        return self.x==p2.x and self.y==p2.y
    def __repr__(self):
        return str(self.x) + " " + str(self.y) 
def dist(p1,p2):
    return (p1.x-p2.x)**2 + (p1.y-p2.y)**2

f= open("cmap.in","r")
lines=f.readlines();
n= (int(lines[0]))
points=[Point(int(line.split()[0]),int(line.split()[1])) for line in lines[1:]]

#print(points);
points.sort(key=lambda Point: Point.x)

def distanta_minima(puncte):
    #print(puncte)
    if(len(puncte)==2):
        return dist(puncte[0],puncte[1])
    elif len(puncte)==3:
        return min(dist(puncte[0],puncte[1]),\
                    dist(puncte[2],puncte[1]),\
                    dist(puncte[0],puncte[2]))
    mijloc=(len(puncte))//2
    distanta_st=distanta_minima(puncte[0:mijloc])
    distanta_dr=distanta_minima(puncte[(mijloc):(len(puncte))])
    return min(distanta_st,distanta_dr)

#for p in points:
#    print(p)
#print(math.sqrt(distanta_minima(points)))
f= open("cmap.out","w+")
f.write(str(math.sqrt(distanta_minima(points))))