Listalla on kokonaislukua väliltä . Listalle halutaan lisätä uusi kokonaisluku väliltä , jonka etäisyys lähimpään listalla valmiiksi olevaan lukuun on mahdollisimman suuri. Mikä on tämä etäisyys?
Algoritmin aikavaativuuden tulee olla .
Toteuta tiedostoon distance.py
funktio find
, joka ilmoittaa suurimman mahdollisen etäisyyden.
def find(t, k): # TODO if __name__ == "__main__": print(find([1, 2, 9], 11)) # 3 print(find([2, 1, 3], 3)) # 0 print(find([7, 4, 10, 4], 10)) # 3 print(find([15, 2, 6, 4, 18], 20)) # 4 print(find([41222388, 392676742, 307110407, 775934683, 25076911], 809136843)) # 191628970
Selitys: Ensimmäisessä tapauksessa vastaus on , koska listalle voidaan lisätä luku tai , jolloin etäisyys on (lukuun tai ). Ei ole mahdollista lisätä lukua niin, että etäisyys olisi tai enemmän.