CSES - Kilpailu

Kilpailussa osallistujat lähettävät tehtäviin ratkaisuja. Tehtävät on numeroitu 1,2,3,1,2,3,\dots ja jokaisesta tehtävästä voi saada 00100100 pistettä.

Jos osallistuja lähettää samaan tehtävään useita ratkaisuja, tehtävän lopullinen pistemäärä on suurin yksittäisen ratkaisun pistemäärä. Osallistujan kokonaispistemäärä saadaan laskemalla yhteen kunkin tehtävän pistemäärä.

Tehtäväsi on muodostaa kilpailun tuloslista, joka sisältää osallistujien nimet ja pistemäärät. Osallistujat on järjestetty pistemäärän mukaan suurimmasta pienimpään. Jos kahdella osallistujalla on sama pistemäärä, tämän pistemäärän aiemmin saavuttanut osallistuja katsotaan paremmaksi. Jos kahdella osallistujalla ei ole lainkaan pisteitä, heidät tulee järjestää aakkosjärjestykseen.

Toteuta tiedostoon contest.py luokka Contest, jossa on seuraavat metodit:

  • __init__: muodostaa olion
  • add_submission: käsittelee osallistujan lähettämän ratkaisun
  • create_scoreboard: muodostaa kilpailun tuloslistan

Seuraava esimerkki näyttää tarkemmin, miten luokan tulee toimia.

class Contest:
    def __init__(self, names, task_count):
        # TODO

    def add_submission(self, name, task, score):
        # TODO

    def create_scoreboard(self):
        # TODO

if __name__ == "__main__":
    names = ["anna", "pekka", "kalle", "tiina", "eeva"]
    contest = Contest(names, 3)

    contest.add_submission("tiina", 2, 30)
    contest.add_submission("pekka", 1, 40)
    contest.add_submission("tiina", 1, 20)
    contest.add_submission("pekka", 1, 50)
    contest.add_submission("pekka", 2, 0)
    contest.add_submission("eeva", 3, 100)
    contest.add_submission("anna", 1, 0)
    contest.add_submission("eeva", 3, 80)
    contest.add_submission("tiina", 2, 30)

    scoreboard = contest.create_scoreboard()
    print(scoreboard)
    # [('eeva', 100), ('tiina', 50), ('pekka', 50), ('anna', 0), ('kalle', 0)]

Tiina on ennen Pekkaa tuloslistalla, koska hän saavutti pistemäärän 5050 aiemmin. Anna on ennen Kallea tuloslistalla, koska kummallakin on 00 pistettä ja Annen nimi on aiemmin aakkosjärjestyksessä.