-
Notifications
You must be signed in to change notification settings - Fork 11
Unsupported ICPC rules modification #150
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Contest penalty_time is the only time that's in integer minutes, and one of only 3 places where we even say minutes in the spec. As per issue icpc#150, it also blocks non-integer penalty times. This changes it to use RELTIME, which improves both issues. It does not attempt to address anything else in issue 150, namely no attempt to add additional scoring algorithms.
Contest penalty_time is the only time that's in integer minutes, and one of only 3 places where we even say minutes in the spec. As per issue icpc#150, it also blocks non-integer penalty times. This changes it to use RELTIME, which improves both issues. It does not attempt to address anything else in issue 150, namely no attempt to add additional scoring algorithms.
Since #151,
I thought AtCoder used scoring problems? As such they would not have "penalty" in the sense we talk about here? Could you elaborate on what the exact rules are for AtCoder rounds?
Maybe Most consistent with the changes in #151 would be to specify it as I think we should require that
Why would you want this to be different?
I don't think this is the penalty algorithm, this is more like the score(board) algorithm, and there are a lot more than these two. |
I like the idea about |
FTR, Kattis also has this setting (and no way to communicate it through the API). |
They have both. They have scoring, but no sub-tasks. That's why collision of score is quite probable, so tie-breaker is needed. In fact, it's much closer to weighted ICPC rules, than to IOI. |
Could you explain what the rules are? I could not find information on the AtCoder site. A common tie-breaker for the kind of contests that you describe is "time of last score improvement" (sometimes called "time of last submission"), which is not really penalty, in the sense we use the term. Is that what they are using? |
I can't find it on the website indeed, but I can explain myself. They do the following:
I wouldn't say that an essential part of the definition of penalty is "being the sum of time of submissions + something". I would say it's "being related to time" and "being tie-breaker in case of equal score, not affecting score calculation itself". Similar rules were also used in google code jam and are used now on meta hackercup, so I wouldn't say it is something marginal. |
This sounds to me like the normal ICPC rules with 5 instead of 20 penalty minutes, and extended to score?
Riiight, I mostly agree, because the rules you have now described are pretty much the same as the ICPC rules, and so it is in fact penalty in the sense we use the word. I still would not call this setting I do agree that it would be worthwhile to solve this though. Maybe we could start by collecting all the contest formats we know of, and find a good compromise of settings that allows us to cover as much as possible as simply as possible. |
Well, it's slightly different, as it has max instead of sum. But very close. Here are all versions of penalty calculations I have for live, that can be a good start of list. They are not specific to score/icpc, assuming all submissions before last improvement as wrong and last improvement as one counted for penalty. |
As communication of penalty calculation rules I see the following dimensions:
It looks like it can be hard to understand which combination of the properties above is reasonable in general, so an object with several fields looks better, than the specific list of available rulesets. If we decide to go that way, there are a lot of naming questions, but probably they are easier to discuss within MR, not within issue. |
This was discussed at today's meeting. Quick summary of most important things:
|
My last thoughts from the meeting:
To make this really explicit, I think it would be fine for someone to define a |
I had to fix a scoreboard this week (it started showing REL_TIMEs 😀) and work on another (longer story), but it made me realize that even the 'ICPC scoreboard' is subjective. e.g. if you made penalty_time 2.5 minutes or didn't round submission times, you might want to see that on the scoreboard. So, I still prefer the pattern where each scoreboard/scoring algorithm adds properties and I think there is some value in a hierarchy or relationship between them (e.g. 'pass-fail.icpc' vs 'pass-fail.tim' might share properties or at least be easy to implement one if you already support the other?). But I think the only real difference between the |
This change address issue icpc#150. It allows describing some small modifications to how the scoreboard is calculated, so downstream clients can do it consistently themselves if needed.
Some contest control systems do not round the penalty for each problem to the minute but use some other penalty resolution.
The main option I have seen is to sum submission times with seconds resolution and round down to the minute at the end, but just using penalty as seconds also makes sense.
Also, some contests (e.g. Atcoder rounds) use last-submission time instead of sum-of-submissions.
I think it should be possible to specify these changes in the Contest object, a
penlty_time
is specified, not forced to be equal to 20 minutes.So my proposal is, to add the following fields in the contest object:
problem_penalty_resolution
it can be either an integer (in seconds or in milliseconds?) or enum (MINUTE, SECOND, etc).total_penalty_resolution
in a similar waypenalty_algorithm
which is enum, whethersum
orlast
, maybe some more options if someone comes up with them.This change is easy to implement in CCS'es - they can just send objects correctly to them not making it configurable, if it was not. And reasonably easy to implement in scoreboard calculation.
Questions need to be accurate with:
We should decide if
penalty_time
is specified in minutes or inproblem_penalty_resolution
units. Both make sense to me.The text was updated successfully, but these errors were encountered: