CSES - Kilpailu

Kilpailussa osallistujat lähettävät tehtäviin ratkaisuja. Tehtävät on numeroitu 1,2,3,\dots ja jokaisesta tehtävästä voi saada 0100 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 50 aiemmin. Anna on ennen Kallea tuloslistalla, koska kummallakin on 0 pistettä ja Annen nimi on aiemmin aakkosjärjestyksessä.