When submitting a solution in C++, please select either C++14 (GCC 6-32) or C++17 (GCC 7-32) as your compiler. ×

adnan_toky's blog

By adnan_toky, 3 years ago, In English

I am very frustrated after getting another unexpected warning from codeforces after the last educational round. I have already described the issue previously in this blog Unexpected warnings from CodeForces. It's disturbing to write over the same issue repeatedly. But I must write again this time because I did not receive any response from codeforces after writing the previous blog and commenting multiple times. It's very disappointing for me as a member of this community.

My submissions of this round skipped getting an unexpected warning that says my submission to problem C (1555C - Coin Rows) 124303153 coincides with the submission 124301236 by NZB.

The solution to problem C was very simple. We are given a grid of two rows as input and we have to calculate the answer from the sum of the suffix of the first row and the prefix of the second row. My solution was like this:

int n;
cin >> n;
 
ll x[2][n+1];
 
memset(x, 0, sizeof x);

// input for the first row
for (int i = 1; i <= n; i++){ 
    cin >> x[0][i];
    x[0][i] += x[0][i - 1]; // calculating prefix sum
}

// input for the second row
for (int i = 1; i <= n; i++){
    cin >> x[1][i];
    x[1][i] += x[1][i - 1]; // calculating prefix sum
}

ll mn = LL_INF;

// calculating the answer
for (int i = 1; i <= n; i++){
    mn = min(mn, max(x[0][n] - x[0][i], x[1][i - 1]));
}

Isn't it the simplest approach to solve the problem? More than 6000 people solved this problem during the contest. So there is a high possibility to coincide two submissions for a problem having this kind of simplest approach. Although the submission that coincides with my submission is different from many aspects except the approach of implementation. Codeforces plagiarism checker should be smarter to judge this kind of sensitive situation.

Here I'm attaching the submissions.

My Submission
NZB's Submission

If you want to downvote the post, please leave a comment before downvoting explaining how should we approach simple implementations like this and what would be your feeling after being convicted as a cheater twice just for the simplicity of your implementation? Isn't it heartbreaking and unexpected from such a reputed platform like codeforces?

I hope MikeMirzayanov will handle the situation gently this time and roll back the situation.

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

»
3 years ago, # |
  Vote: I like it +72 Vote: I do not like it

May be Codeforces can implement an appeal system for such plagiarism cases? The following criteria may be used to make it feasible.

  1. All appeals will be visible by people with a certain rating or above, who can review the said appeals. The reviewers will get contribution points for reviewing.

  2. Appeals can be sorted by the rating of the appellant and lines of codes. This is only to slightly handle number of appeals being too large.

  3. Appellants can ask others to check their appeals and add more priority to these appeals so that they are shown faster/more to reviewers.

  4. If a certain number of reviewers deems the appeal is valid, the plagiarism accusation should be reverted. So obviously these should all happen before ratings are updated.

  5. If a certain number of reviewers deems the appeal is invalid, it will be canceled. An appeal from an appellant who has a lot of appeals cancelled before should have lower priority than normal.

I am not sure how feasible this is, but maybe others can figure out better modifications or completely different ways after some brainstorming. But definitely, this problem needs some solution at this point.

»
3 years ago, # |
  Vote: I like it +69 Vote: I do not like it

Here's my take on this whole situation.

You participated in 128 rated contests. Or actually in 130 contests, if we also count those 2 contests, where your participation was skipped due to suspected coinciding code. And 2/130 gives us roughly a ~1.5% false positive chance. That is, assuming that we are absolutely sure that you didn't cheat. Your actual punishment was only a skipped contest participation in two cases. Which is unfortunate, but not a big tragedy.

Yes, ideally there should be 0% false positives, but I doubt that this is technically possible for any automated plagiarism checker. If the plagiarism checker verdict looks like a very likely false positive, does it make sense to manually revert it? Unfortunately this opens a big can of worms. I'm sure that if your appeal is granted, then there will be many similar requests piling up. And a lot of such requests will be coming from real cheaters, because they have nothing to lose by doing that. The codeforces administration will be overloaded with a massive amount of work when handling all these requests.

TL;DR You surely had an unlucky day, but it doesn't look like the codeforces plagiarism checker false positive rate is unreasonably high. And the negative consequences to you are minimal in the grand scheme of things.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it -62 Vote: I do not like it

    I think CodeForces better not do plagiarism check than convicting innocent people. Such a thing is clearly a scar on someone's profile. Why would someone carry it if he isn't guilty?

    I believe it's better that hundred guilty persons go free than that one innocent person be convicted.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +2 Vote: I do not like it

      While __FaRiA_eFa__'s comment got a lot of downvotes, probably because of how important the plagiarism check also is, I think most people did not think through about how important the underlying motivation behind her comment is.

      These kinds of things really scar a contestant's mind and career.

      Even if the false positive rate is small, I am pretty sure everyone agrees that it is in no way desirable. And while it's quite tricky to create a better plagiarism checker, I believe the community can come up with brilliant things to at least mitigate the problem if they put their mind to it.

      The main issue I have here is how this problem is so underrated, just because the false positive rate is small (but the impact of those small false positives are quite huge, also it affects some people more than others, just because of their code writing style!). My personal belief is that this should be taken more seriously, but we have yet to see even any sign of that.

      We should at least make some good effort to try to solve this problem, at least as much as possible even if not a perfect solution.

»
3 years ago, # |
  Vote: I like it +10 Vote: I do not like it

Isn't it heartbreaking and unexpected from such a reputed platform like codeforces?

Yes it is. I think they will probably figure it out in the near future. Are your ratings affected by this? (I am new to codeforces so i dont know)

»
3 years ago, # |
  Vote: I like it +20 Vote: I do not like it

As said before, a good plagiarism checker is hard to create, and will take time. I suggest that since this is happening to you, you should just wait for your situation to be resolved.