CSES - Suurin etäisyys

Listalla on nn kokonaislukua väliltä 1k1\dots k. Listalle halutaan lisätä uusi kokonaisluku väliltä 1k1\dots k, jonka etäisyys lähimpään listalla valmiiksi olevaan lukuun on mahdollisimman suuri. Mikä on tämä etäisyys?

Algoritmin aikavaativuuden tulee olla O(nlogn)O(n \log n).

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 33, koska listalle voidaan lisätä luku 55 tai 66, jolloin etäisyys on 33 (lukuun 22 tai 99). Ei ole mahdollista lisätä lukua niin, että etäisyys olisi 44 tai enemmän.