chenhongrui's blog

By chenhongrui, history, 4 months ago, In English

In the recently concluded CF Div. 2 competition, 7 out of the top 10 contestants have been identified as using AI to cheat. Even in my opinion, giperus's solution for problem E2, completed in just 15 minutes, doesn't seem to follow a human-like coding style.

These individuals were only caught because their rankings were exceptionally high. I wonder how many more contestants among the remaining participants also used AI.

Of course, those who were caught cheating simply fed the problem statements directly into AI and submitted the generated code without modification. If any of them had been smarter—by only reading the AI-generated approach and then writing the code themselves based on that idea—they might never have been detected.

In this era of explosive AI development, does the integrity of ratings in online competitions now rely entirely on contestants' honesty? Are we truly powerless to prevent cheating participants from dominating various online competitions?

Is there really no effective method to curb AI cheating at present? Will the ratings on platforms like CF, AtCoder, and Luogu ultimately become nothing more than "just for fun"?

PS:This is written in Chinese and translated by AI. If you are a Chinese contestant, feeding this text to Deepseek for translation can yield a meaning similar to the original.

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

»
4 months ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

Auto comment: topic has been updated by chenhongrui (previous revision, new revision, compare).

»
4 months ago, hide # |
 
Vote: I like it +29 Vote: I do not like it

Maybe afew verifications could make the rating 90-95% accurate ?

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it +81 Vote: I do not like it

    But,how?

    Moreover, the biggest issue is that many contestants feel no shame about cheating with AI. No matter what methods are used to strengthen detection, there are always ways to bypass them. As the Chinese saying goes, "As virtue rises one foot, vice rises ten."

    • »
      »
      »
      4 months ago, hide # ^ |
      Rev. 2  
      Vote: I like it 0 Vote: I do not like it

      Why cf doesn't bring phone number verification ? ... At this point it is the ultimate solution !!! It's not like someone giving contest here do not have phone (They could use there parent's if so) !!!

      • »
        »
        »
        »
        4 months ago, hide # ^ |
         
        Vote: I like it 0 Vote: I do not like it

        Do you think cheaters cannot borrow phone numbers from their relatives? This would just cause inconvenience for the legitimate participants while it will just be another minor hurdle for the cheaters. Also, a lot of people will just withdraw from the platform because they might not be comfortable in giving out their phone number. What's next? Ask for their govt. approved ID?

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it 0 Vote: I do not like it

          What if we delegate, our verification to some 3rd party verified source, I don't know much, as per I saw, LinkedIn has ways to verify user profile, through collage id or some document, we can use that, if possible

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it 0 Vote: I do not like it

          No they can't ... How many will they borrow ?? Also everytime they login they have to login through OTP ... and codeforces could do something that automatically signs them off few days or so ... so that they login again with OTP ... Who said No one will be comfortable with giving there number ?? You can give phone no. to social media sites and not here, which also would not be shown here to everyone

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it 0 Vote: I do not like it

          There will be a lot more hurdle than you could imagine ... No sudden BOT accounts ... Only 2-3 times cheating and getting banned then its over

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it +18 Vote: I do not like it

      This will also mark the end of creating BOT accounts ... Also how many phone numbers you think cheaters would afford if banned 2-3 ??? Surely not more than that

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it +3 Vote: I do not like it

      Well, what about submitting screen recording, like in India, during ICPC Regional round which held online, they provided some python3 scripts and OBS studio instructions to proctore, by this they eliminate some cheaters. Cheating in this system need some good setup and I doubt cheater will go that length.

      Mobile verification idea is also good enough.

      • »
        »
        »
        »
        4 months ago, hide # ^ |
         
        Vote: I like it +1 Vote: I do not like it

        How will you fund the resources to monitor those screen recordings? There are a lot more participants in regular online contests than the ICPC preliminary contests, and with far less severe consequences.

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      Is there simply no way to filter clanker code out?

»
4 months ago, hide # |
 
Vote: I like it -192 Vote: I do not like it

I understand your concern, hear me out

  • solved e2 directly(as only constraints were tighter for hard)

  • it is only 15 lines of code

But the problem of cheating is real, given im being accused too by other cheaters which is funny

I appreciate you raising your voice and hope we get to something

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it +21 Vote: I do not like it

    Could you please teach me how to write this code in 9 minutes? 352201903

    Note: your submission to D is at 00:19, while your first submission to F, as I linked above, is at 00:25.

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it +26 Vote: I do not like it

      What's more, you finished this code is 56 seconds 352190212. Wow, that's really impressive!

      • »
        »
        »
        »
        4 months ago, hide # ^ |
         
        Vote: I like it -59 Vote: I do not like it

        Regarding F(352201903): Already had DSU, LCA templates, so only had to logic for 1 swap(which I realized later was wrong and took me another half an hour to get to correct solution).

        Regarding C(352190212): I started with C, then realized midway that B is only 2-3 lines of code and quickly submitted it. Then completed C. So it took me a good 4 minutes for C, not 56 seconds.

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it +7 Vote: I do not like it

          Ok this is reasonable

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it +47 Vote: I do not like it

          Dude, your main() templates are not even the same between the two submissions. Are you seriously telling me you swap between

          int32_t main() {
            ios_base::sync_with_stdio(0);
            cin.tie(0);
            cout.tie(0);
            int tc;
            cin >> tc;
            while (tc--) {
              solve();
            }
            return 0;
          }
          

          and

          int32_t main() {
            ios_base::sync_with_stdio(0);
            cin.tie(0);
            cout.tie(0);
            int tc;
            cin >> tc;
            for (int cas = 1; cas <= tc; ++cas) {
              solve();
            }
          }
          
        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it +13 Vote: I do not like it

          Why does a shameless cheater like you have the nerve to come out and make such wild remarks? Even a baby can see how childish your excuses are.

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it +13 Vote: I do not like it

          Unless you did all of this to earn yourself an extremely negative contribution — if so, congratulations, you've succeeded.

      • »
        »
        »
        »
        4 months ago, hide # ^ |
         
        Vote: I like it +3 Vote: I do not like it

        Are you seriously arguing ???

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      100% cheat bro . Look at giperus history

»
4 months ago, hide # |
 
Vote: I like it -124 Vote: I do not like it

In this era of explosive AI development, does the integrity of ratings in online competitions now rely entirely on contestants' honesty? Are we truly powerless to prevent cheating participants from dominating various online competitions?

Regarding this concern of yours, it doesn't really matter.

Ratings alone never mattered, cheaters will be filtered out sooner or later(for example during an onsite or an interview or just during a conversation)

They might get few social points flexing it on linkedin or among friends, but it won't get them anywhere.

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it +17 Vote: I do not like it

    who gives f about interview. This platform is for someone who love cp. what ar you talking about, just go for leetcode bro.

»
4 months ago, hide # |
 
Vote: I like it +14 Vote: I do not like it

In my college there are two experts (there are more) who cheat. They made ICPC team together and even got selected. One got a skipped contest .Unfortunately it was unrated and he still shamelessly posted about trying for CM. Other one's code makes it look like he is not even cheating but he wrote a code in codechef that was clearly AI (not caught) --> From a ridiculous Python code to C++ code in 5 min. How do they not get caught even after repeatedly cheating in consecutive contests.

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it +4 Vote: I do not like it

    You're right. Among those who cheat, there are indeed many highly skilled contestants. However, Codeforces' anti-cheating mechanisms are extremely limited, making it difficult to catch every single contestant who cheats.

»
4 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

Except physical competitions, no. It's quite impossible to prevent cheating if you just, ask the AI for ideas, then code it.

»
4 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

As stated previously, the standard methods are:

  • Flagging participants who have unexpectedly good results, and then further analysis
  • Trust systems, which is based on the number of people/communities that can "vouch" for a person.

For the last point, I wonder if having something akin to a competitive programming "Trust voucher" per person could make sense (like, where each community that trusts an individual "stamps" that trust voucher $$$\rightarrow$$$ cryptographically signs it... $$$\rightarrow$$$ some blockchain nonsense). In any case, while I think the idea is cool, it would just be exploited for personal gain in one way or another by cheaters... (like creating false trusting communities, etc)

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it -17 Vote: I do not like it

    how's it valid to just flag someone who had an unexpectedly good result?

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it +6 Vote: I do not like it

      Flagging isn't banning: it's just a tool that administrators can use to not have to sift through thousands of users and just to focus on suspects.

      And of course, depending on the conditions, flagging criteria should change; nevertheless, it's the standard method used to deal with cheating in many online "reasoning" games, such as chess.

      And of course, chess and competitive programming are very different both in what they are fundamentally and how cheating can be evaluated (it's very practical in chess to look at the difficulty of a move and conclude whether a person at level X could have made it or not + with what probability, and after that see how many unreasonable moves were made and whatnot). Here, the closest criteria we have is the problem difficulty. Of course, perhaps a person is not that good at adhoc but really really good at geometry, so they can solve a geometry 2500 problem ezpz but not a 1900 adhoc (because of which they'd get an unexpected result), but for that we can use statistical methods to evaluate how likely a person is to solve X very hard problems relative to their difficulty.

      You can see a trivial example of this on clist.by, where (with an account) you can see the probability you solve a certain problem if you have a registered problem.

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      Flagging simply points someone in the direction of an unexpectedly good result.

      Sure, every dog has it's day, but if you have a history of only poor contest performances with some of those contest performances failing to complete a single task; and then you suddenly bang out a solution to every task in a contest? That's going to be suspicious.

»
4 months ago, hide # |
Rev. 2  
Vote: I like it +80 Vote: I do not like it

Unfortunately, the it is true that AI is destroying the online CP.

A live example, my rating for leetcode is around 2500-2600 and still keep dropping, however, my rating is once higher than 3000 in Dec 2024, and I never drop below 2700 from 2022-2024.

Is it because I am weaker? Obviously not, it is only because a lot of people cheat to get high rating, and my rating is eaten by them.

For atcoder, it is same, like yesterday's atcoder contest, nearly 1400 people solved a 550 rating atcoder problem, which is beyond imagination before.

In my round 1061, nearly 400+ users solved F1, however, F1 is very hard according to my testers, none of my red testers solved F1, they said it should be at least 2600 rating, but it is actually 2200. F1 can be solved by latest chatGPT in several attempts.

Currently my rating is 2184, but it is only because I seldom participate rated div1, if I participate codeforces and rate it every week, I am sure I will soon become expert.

So, YES, your rating will 100 percent drop if you don't use AI and continue participating, you may have a few good rounds and rating even increase a little, but if you have a bad round you will face great punishment, a very big drop. The expectation value of your rating change is negative.

But, I believe 80 percent of the contestants are as integrity as me, and will never use AI. Using AI in cp is like using motorcycle in Marathon race, totally meaningless, if you really care about your rating, the best way is just quit cp and find something more interesting in your life.

Or just like me, only participate for fun. Current I am yellow, and I will probably become purple or even blue with the development of AI and number of cheaters increase, but I really don't give a shit now.

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    The analogy of using motorcycle in marathon really get me a good laugh. Anyway, I did spam contest a bunch and my rating compared vs the start of the year... the result is very humbling (I'm in the other side of spectrum, which is spamming contest if you're curious).

    There's a fine line between getting weaker or being out run by other competitors, but I choose not to stop joining contest (at least until I reach blue) and see how it goes.

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it +11 Vote: I do not like it

    F1 is no near 2600 difficulty, the first greedy that comes to mind works, it's 10 lines of code so easy to verify as well.

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      Wouldn't a participant's past contributions make it pretty clear whether they're cheating or if they are in fact, as good as their rating reflects?

      (this question is more in-line with the general problem here)

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    I agree with the last paragraph. We should just get rid of ratings and participate for the fun of it. Maybe this will get rid of most of the cheaters as a byproduct.

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it +14 Vote: I do not like it

      People cheat to improve their odds in this brutal job market. Getting rid of ratings wouldn't be enough, we'd need to get rid of ranking lists for each contest. If ranking lists persist, there is still an incentive to cheat since cheaters can put strong contest finishes like top 1% or top 5% on their resume. Obviously that's not feasible. A better solution is to attach some form of identification to people's accounts. For example, on my account you can see my name, the university I attended, and my university email. If someone like me decides to cheat, at least they'd have to stake their reputation.

      • »
        »
        »
        »
        4 months ago, hide # ^ |
         
        Vote: I like it 0 Vote: I do not like it

        I see where you are coming from, but I think attaching identification to accounts is a big step to take. If you want identification, you need some ways to verify. How should we do it? Is CodeForces the right place to do it? It might raise more safety or privacy concern. I am not an expert in laws, but I believe many countries and areas have related laws & regulations about this.

        I am personally fine with using my legal name and school, but it may not be the case for everyone, regardless if they want to cheat or not.

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it +3 Vote: I do not like it

          Thanks for your input. There are decent ways to verify people's identity out there. Services already exist for this, Codeforces would just need to employ them. I agree there are safety and privacy concerns, I addressed some of them in my most recent blog post if you want to check it out.

          I basically proposes a two tiered system, one with verified and unverified accounts that compete in the same contests. Verified accounts will have a "Verified Rating:" field on their profile, while unverified accounts will have an "Unverified Rating:" field on their profile. This gives job seekers an incentive to verify their accounts, because recruiters will not like seeing "Unverified Rating:" if they visit a candidates account. It also spares people who are uncomfortable with verifying their identity and children from having to do it.

          Basically, the only people who will be heavily incentivized to verify are those who are trying to use their Codeforces rating to help them land a job. I think that's fair.

          • »
            »
            »
            »
            »
            »
            4 months ago, hide # ^ |
             
            Vote: I like it 0 Vote: I do not like it

            That sounds fair, I think that's really a good idea.

  • »
    »
    4 months ago, hide # ^ |
    Rev. 2  
    Vote: I like it +10 Vote: I do not like it

    leetcode really is a cesspool now. they don't even ban obvious cheaters who put things like x = 1; x = x + x; in their code to look 'more real' well to be fair if you don't care about your rank the contests are still nice

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    I don't think, that AtCoder problem was difficult: I've just solved it in a couple of minutes.

    The Codeforces problem you mentioned also doesn't look hard for me (easy version, certainly).

»
4 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

You have to do proctored competitions like chess does. Otherwise it won't matter. I was looking at the last div2 contest and A through C could be solved under couple minutes only using publicly available LLMs which means that to compete with them you would have to be purple at the very least and hope that they don't have some version of LLM that can solve problem D. I don't think the contest ratings mean anything anymore for people under GM ratings which is tragic.

»
4 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

yo creo que con el tiempo se ira reduciendo, porque no tiene sentido que seas gm en codeforces gracias a la IA y en un icpc o otra competencia presencial des verguenza.

»
4 months ago, hide # |
Rev. 2  
Vote: I like it 0 Vote: I do not like it

There's something that can be done to ensure that a given problem cannot be solved by a given LLM. If you feed the problem and a decent prompt to a model, ensuring that the model has a proper token generation configuration, then if the model is unable to solve it in X attempts, you can be reasonably sure that the problem cannot be solved with the model you used. This also covers cases where a user asks the model for ideas, as the model is likely to provide inadequate suggestions. This would happen when the model wasn't trained with the specific knowledge required to solve the problem. The main issue is that OpenAI hired a group of elite competitive programmers, and as a result, many models contain a significant number of problem-solving ideas encoded within them. They thought that this would make the models elite coders, but it didn't. I have created an open-source version of AlphaCode, which problem setters can use if they desire to apply the method I explained earlier. The tool can be found here.

PD: I have created a blog explaining how to use LLMs to detect AI plagiarim here

»
4 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Some form of unique identification needs to be tied to all accounts

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    This will not solve the cheating on contest. Because they will just do the identification. Then Ask ai to solve it.

»
4 months ago, hide # |
 
Vote: I like it +5 Vote: I do not like it

Most feasible solutions will be akin to shifting the goal post. It will add unwarranted inconvenience for legitimate participants while subjecting cheaters to just another minor hurdle.

If you inspect the motive behind cheating then it's always something like getting a job, earning social credits, getting into some exclusive community, college club, camps, etc. And, how does cheating, in what's expected to be an online platform to practice, help them with their goal? It's because organizations use it as a filtering criteria. Why will the candidates use it to practice and up skill, to achieve their goals when they can just cheat and achieve it anyway? LLMs only made cheating more convenient, but it's fueled by these organizations being lazy in their recruitment process. I think this quote applies here:

When a measure becomes a target, it ceases to be a good measure.

The ratings and rankings should be in a position such that they hold little to no significance to anyone (recruiters, LinkedIn crowd, etc) except those that are participating for the competition's sake. Interestingly, rampant cheating is getting us there, where it's become difficult to trust anyone's ratings, especially if they post on LinkedIn or some other social platform about it.

All this does not apply to onsite contests though, where proctoring is trivial. So, ICPC rankings can still hold prestige.

  • »
    »
    4 months ago, hide # ^ |
    Rev. 3  
    Vote: I like it +15 Vote: I do not like it

    I posted Div 2 Round 1067 on my LinkedIn, because it was my best performance ever so far, LOL. Codeforces has historically been a great opportunity for people like me to prove our intelligence and to put something impressive on our resumes. Especially since I kind of missed out on competitive math/programming during my childhood and only recently got into it, now that I've already graduated from university. It's a shame that cheaters are ruining this opportunity for people like me.

    And don't get me wrong, I thoroughly enjoy competitive programming. I just also like that it's a way for me to differentiate myself.

»
4 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Maybe if Codeforces had an official app, contests could run in a full-screen locked mode where users can't switch to anything else unless they manually exit. And once they exit, they wouldn't be allowed to re-enter the contest.

P.S. I just realized people could still ask an AI on another device, but at least it would slow them down.

  • »
    »
    4 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    Yeah something like that could work. I also proposed some ideas in my recent blog post. I also like the idea of stricter and more widespread surveillance/monitoring of accounts. I think we as people can get a pretty good sense of when someone performs a little too good considering their past performance. There needs to be a higher bar for creating new accounts. It shouldn't be as easy as it currently is. New accounts need to immediately be placed on a high priority watchlist. Since some people might try to be smart and grow their rating slowly and steadily using AI, there should be checkpoints on the rating ladder. If you hit a checkpoint, you must schedule a video interview and prove your ability.

    • »
      »
      »
      4 months ago, hide # ^ |
       
      Vote: I like it 0 Vote: I do not like it

      The idea is really good. But scheduling a video interview is I think overkill. Maybe if you reach a checkpoint u have to give a video of the contest to verify it. But u will need a lot of people to watch these videos.

      • »
        »
        »
        »
        4 months ago, hide # ^ |
         
        Vote: I like it 0 Vote: I do not like it

        Ooh that's a smart idea. There is pretty good eye monitoring AI technology out there nowadays, so if a participant is forced to give a webcam AND screen recording of their contest, we should be able to get a pretty good idea of their honesty. Since people can have one off bad contests, especially under the pressure of surveillance, I think they should definitely be given multiple chances to prove themself before getting disciplined, probably 3-5 tries per checkpoint?

        • »
          »
          »
          »
          »
          4 months ago, hide # ^ |
           
          Vote: I like it 0 Vote: I do not like it

          That’s actually true. But doing it 3–5 times also means participating in 3–5 contests, right? So I think 2 should be enough. This can also be 3, if they’re showing signs of stress. Also by the time they reach the third attempt, their body has usually already adapted to this environment.

»
4 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I am afraid all the effort I put into CP goes to waste

»
4 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

I feel like this affects low rated contestants (like myself) more because these people might not typically make it very high in contests but could overall mess up the ratings and as the issue grows and pose a threat to trying to slowly climb in rating if many high spots in div2 and div3 contests are filled with contestants using AI.