Hi Codeforces.
Recently there have been several improvements on the website. A little later, I will write a short note about them. Here I want to tell about a noticeable new functionality that has recently been implemented by kuviman.
Sometimes after the end of a round there are requests in comments to add a particular test. And problem writers or coordinators add it manually. Now this process is automated.
Meet the uphacking phase!
Now, after the end of almost any contest, participants from Div.1 have the opportunity to hack any solution in this contest during the week. Yes, including official solutions from rounds. In case of successful hacking:
- Your test will be automatically added to the problem and will be used in the future when testing new solutions for this problem;
- If a hacked solution is a practice (i.e. upsolving), then its verdict will change to “hacked” otherwise its verdict will remain unchanged;
- The participant whose solution has been hacked will be notified via system private message;
- Each solution can be successfully hacked only once.
In order to add only adequate and reasonable tests, it is forbidden to hack solutions that intentionally contain a mistake. Please strictly follow this rule. It is because of the possibility of inadequate behavior that we cannot open uphacking for everyone.
I hope that this innovation will be useful and tests for problems will become even better!
- MikeMirzayanov
UPD: Probably, later we will extend uphacking phase and reduce the rating bound.
What about some limit? You should be blocked for an hour after ten unsuccessful hacking attempts. There are some randomized solutions that will break after 1000 random tests. Otherwise, that's a nice feature. By "including official solutions from rounds" do you also mean author's solution?
Later we will introduce some limits if needed.
Here, official means contest solutions of official participants.
Let us have some fun. Publish authors' and testers' solutions too :>
You are also one of them xD
How would you hack an author's solution? Hacks run on their solution to determine expected output. If your solutions conflict, how will the system tell who is right?
What about the author's solution gets TL/RE instead of WA?
Or the problems need to output a plan which has multiple answers, the author's solution can't pass the checker.
You can even hack the validator or checker.
Uphacking works basically same as usual hacking during the contest.
We still assume that authors' solutions are correct, you would get system failure in case they are not.
well, it's still possible to show that author solutions disagree (or too show that output is certainly incorrect in case of "smart" checker)
Yes, if you get failed verdict, that's most likely this.
But I don't think there can be done anything automatically here, this would require authors to check, hence it is a failure
Uphacking can help with fixing the tests, not authors solutions, unfortunately :)
Well, if you'd show author solutions, it would help with authors solutions too :)
There are always a bunch of solutions made by authors and testers. It's enough to find a test for which some of them will disagree.
I agree with you that may lead to DOS attack if someone automated the test so limits will avoid DOS attacks
If a solution is hacked after rating change of a rated contest, will it affect the result of the contest? Like will the standings update or the rating change?
Thanks a lot for the great feature! I remember there were rounds that got pretty weak tests.
If a hacked solution is a practice (i.e. upsolving), then its verdict will change to “hacked” otherwise its verdict will remain unchanged;
Thanks! That rule make sense for me now :)
Hello MikeMirzayanov , There is a bug,when we open a solution to hack, I am unable to read the complete message about uphacking ( if I try to scroll down then the hacking window also scrolls down). To reproduce the bug, open any solution and scroll down, the complete hacking window does not fit on screen.
UPD: Initially I was getting option to hack but now this option has been removed, I think it was a mistake !!
Will there be separate hackers ranking? (Similar to Contributors)
it would be a awesome thing if it separate ranking is built
There should've been a separate hackers' ranking even before.
halyavin will top that list.
should add hacking points on profile for incentive
But this will also give incentive to hacking solutions that were created by mistake, hence adding way too many tests to the problem and slowing down codeforces significantly. Better to leave it as is
There might be more features that should be available only for experienced users, so that would be great if we have some sort of "experience point" system. Users participated in enough contests and achieved enough rating (therefore increase their XP) will gain privileges to up-hacking, proposing a problem/contest, faster feedback, faster reporting of disrespect behaviours/cheating, etc...
What about constructing solution-specific countertests for randomised solutions with otherwise very low probability of failure? Should that be allowed?
after that does there a new counter for successful and unsuccessful hack in profiles (like contribution)?
Good quality update. Hope to see many more in the future.
I think implementing a check mark for intentionally mistaken solutions is good.
Great, now I can't even practice without getting hacked
Now you can practice without considering your wrong solution as a correct one.
In case of a successful hack on an official rated solution, would the rating change for those whose solutions are hacked? Or, will the ratings updated only after a week when the uphacking phase is over?
You can either read the post carefully or read the comments.
Things are getting more complicated now....
...and more interesting too.
So what submission can people hack.
Why I see some codes in the contest can be hack while some can't.
because you are a gray account
I think you are wrong.
But here it is in the blog:
Seems like one can't hack submissions from virtual participation?
"participants from Div.1 have the opportunity to hack any solution in this contest during the week."
As of now, we can't hack everyone's solution but only div 1 participants, being precise then we can hack solution of participants who currently (after the contest) has rating greater 1900. Is it a bug or I misinterpreted it??
When is this feature possible?
Uphacked submissions in the standings should have another color. Now both failed and uphacked submissions are red. I suggest brown (as the color of what has passed system tests).
ping MikeMirzayanov
Surprised this wasn't mentioned when this post first appeared
This holds true even in virtual contests — 57403374 was an in-contest AC that when I resubmit in a virtual contest I get WA — 57458328. Why??? How is that a virtual experience of a contest? Please MikeMirzayanov just let us have i) option to test solutions against pretests only during a VC and ii) option to test solutions against just the system tests, without uphacks after VCs, so we can simulate the contest experience more realistically.
Judging just on pretests is more important.
What was that?
I agree ... ?
I just mean that we wait for years for the feature of judging only on pretests in VC, while behavior of uphacks in VC is far less important. (It doesn't mean that your proposal shouldn't be implemented.)
Uphacking has been a really nice feature to make tests even stronger for practice. Wouldn't it be better if hacking people outside your room was allowed in contest time, with no positive point for successful hack, maybe negative point for unsuccessful hack? Maybe total number of hacking attempt outside room can be limited per user.
I think this will strengthen the systests, specially for hard problems.
MikeMirzayanov I've noticed a bug with uphacking. Uphacked contest submissions don't show that they've been hacked if you are logged out, see for example https://codeforces.me/contest/1263/submission/65981072.
Also the following is just a small suggestion. I get that it is a feature that uphacked contest submissions still have status "accepted". The issue is that I've been uphacking a lot of submissions on yesterdays E, and now I have a hard time to go over those submissions that haven't been hacked (only way to check if a contest submission is uphacked is to open up the submission). Would it be possible to add something that distinguishes true contest AC and uphacked contest AC?
Could you extend the scope of UPHACK, maybe to 1600+. It's a really nice feature but few people could use it.
I am confused about rules of up-hacking and open hacking (in educational, Div.3 or Div.4 rounds).
In Codeforces Round 855 (Div. 3), I noticed that tests of successful hacking during open hacking phase weren't added to future tests (first and second submission), while tests of up-hacking were added (second and third submission).
Later in Codeforces Round 859 (Div. 4), I noticed that tests of up-hacking were not added this time (fourth and fifth submission), either.
So what is the difference between them? Is it because anyone (maybe the writer?) set constraints like "no new tests are allowed", or the hack behavior violated some rules (or probably something else)?