ThunderStruct's blog

By ThunderStruct, history, 6 years ago, In English

Hi people!

I recently published a platform to host custom Codeforces contests. This was a personal project I worked on (as a contribution to an introductory undergraduate course I TA'd) to serve as a means of hosting mock ACM competitions for training purposes

Features

So far, it has been used in no less than 10 contests, which helped with enhancing it and adding more useful features, including:

  • Auto-updating scores
  • Blind time
  • Varying problem weights/points (an option to manually set the more difficult problems to yield a higher score)
  • Cancelling certain submissions
  • Verifying which of the entered problems were solved by the given user handles (could be used to ensure none of the contest problems was pre-solved before the contest)
  • Logging a detailed report of the given handles, showing their submissions' details in a certain time-frame (or all time)
  • Copying/Loading a contest using a compressed string (to help setup the same contest across multiple rooms/computers)
  • Color-coded scoreboard indicating first submissions, accepted answers, and attempts

Scoring

Currently, the scoring system works as follows:

  1. Each individual problem has it's own linear-based time penalty. The way it works is by calculating how many points should be lost per minute if the problem points are to be halved by the end of the contest (since both the contest duration and problem points are variable)
  2. All penalties/bonuses are in terms of time (minutes)
  3. Each wrong answer results in a 10 minutes penalty (10 minutes' worth of points)
  4. Program efficiency adds bonus points; 20 minutes for a 15ms time-consumed submission

This scoring formula can be changed/customized. I tried to think of a fair way to cover all grounds, but it could be flawed (if that's the case, please suggest ways to improve it)

Finally...

I open-sourced this project to allow people to contribute and modify it to suit their needs. The README markdown contains a fairly thorough documentation of all the tools available and some helpful tips for customization and contribution.

It's also hosted here for convenience.

Update

Please note that all updates and changes made to the platform are logged and documented on GitHub. PRs are more than welcome and feel free to request features or suggest improvements via GitHub issues or mailing me

  • Vote: I like it
  • +40
  • Vote: I do not like it

| Write comment?