CSES - Viimeinen luku

Saat syötteenä listan, joka sisältää nn kokonaislukua.

Tarkastellaan prosessia, jossa valitset joka askeleella listan kaksi pienintä lukua, poistat ne listasta ja lisäät listan loppuun näiden lukujen summan vähennettynä yhdellä. Jatkat näin, kunnes listalla on vain yksi luku. Mikä tämä luku on?

Tehtäväsi on laatia tehokas algoritmi, joka selvittää annetun listan viimeisen luvun. Algoritmin aikavaativuuden tulee olla O(n)O(n).

Toteuta tiedostoon lastnumber.py funktio find, joka palauttaa listan viimeisen luvun.

def find(t):
    # TODO

if __name__ == "__main__":
    print(find([1,2,3,4])) # 7
    print(find([1,1,1])) # 1
    print(find([5,1,1,7,9,1,2])) # 20

Selitys: Kun lista on [1,2,3,4][1,2,3,4], poistat aluksi luvut 11 ja 22 ja lisäät luvun 22. Tämän jälkeen lista on [3,4,2][3,4,2]. Sitten poistat luvut 33 ja 22 ja lisäät luvun 44, jolloin lista on [4,4][4,4]. Lopuksi poistat luvut 44 ja 44 ja lisäät luvun 77, jolloin lista on [7][7].