I158.
Danka Mikls Andrs, 10.o.
Fazekas Mihly Fv. Gyak. lt. Isk. s Gimn.


Az algoritmus:

1. Beolvass
   Beolvasskor a vilgegyetemet eltolom egy olyan vektorral, mely a kzponti csillagot az origba viszi. Ez megknnyti ksbb a szmolst.
2. Rendezs
   Az origtl (kp.-tl) val tvolsg szerint QuickSort (n log n) rendezssel rendezem a bolygkat.
3. Szmts
   A rendezett tmbn sorban vgighaladva kivlasztom az i. elemet. Megnzem, hogy a korbbi i-1 elembl melyik az, amelyik a legkzelebb van hozz, s hozzcsatolva az odig vezet t nem lesz tl hossz (Ut[x]+Tav[i,x]<=Tav[kp,legtavolabbi] s Tav[i,x] minimlis). A kivlasztott elemet a H[i] helyen trolom.
4. Kirs
   A megoldsokat (M1, M2, M1-M2) felszorzom egy 10-hatvnnyal, kerektem, majd ugyanezzel leosztom. A kirskor csak nhny szmjegyet rok ki (ezek konstansknt definiltak, knnyen mdosthatak). Ez azrt j, mert pl. ha a klnbsg kzel 0, akkor a program a lebegpontos szmols miatt nem 0-t fog kirni, gy viszont kzel igen.
   A kirs norml alakban trtnik.


Bizonyts:

   Az algoritmus helyessgre nem tudok bizonytst adni. Sok olyan ellenpldt killt, amit egy csom ms kitlt algoritmusom nem, de flek, hogy nem tkletes. Pldul: csak s kizrlag tvolabb lv bolygkra lehet kzlekedni, ami nem mindig megfelel, de az eseteknek csak nagyon kis hnyadban fordul ez el. Ezrt a legtbb esetben kzel j megoldst kell adnia a programnak.

FreePascalban (v1.0.8) fordtottam. Lehet TurboPascalban is, de akkor be kell kapcsolni egy bizonyos Compiler mdot, illetve a MaxN konstanst lejjebb kell venni, mert nem fr el a 640K-s memriban ennyi (plusz mg a stacket is feljebb kell esetleg venni). FreePascalban ezekkel elvileg nincs gond.


Megjegyzs:

   Megrhattam volna egy olyan programot is, ami az sszes esetet megnzi: ez exponencilis, ami nagyon lass, ezrt gondoltam azt, hogy annl mr egy nha hibs algoritmus is jobb (ha egyltaln tnyleg hibs az algoritmusom). Amit n rtam, az polinomilis, konkrtan n^2-es.