CSES - Suurin etäisyys

Annettuna on lista kokonaislukuja, jotka kaikki ovat väliltä 1k1\dots k. Listalle halutaan lisätä uusi kokonaisluku väliltä 1k1\dots k, jonka etäisyys lähimpään listalla jo valmiiksi olevaan lukuun on mahdollisimman suuri. Kuinka suuri tuo etäisyys voi korkeintaan olla?

Voit olettaa, että listalla on korkeintaan 10510^5 lukua ja kk on korkeintaan 10910^9. Tavoitteena on, että algoritmin aikavaativuus on O(n)O(n) tai 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: Jokainen kokonaisluku väliltä 1111\dots 11 on korkeintaan 33:n päässä jostain listan [1,2,9][1, 2, 9] luvusta. Yksi tällainen luku on esimerkiksi 55, joka on kolmen päässä sitä lähimmästä luvusta 22. Luku 66 puolestaan on kolmen päässä luvusta 99. Jokainen luku väliltä 131\dots 3 löytyy jo valmiiksi listalta [2,1,3][2, 1, 3]. Siksi suurin etäisyys on 00.