close

wrusb's blog

By wrusb, history, 3 weeks ago, In English

A friend of mine told me about a suspected cheater, batats, so I decided to check his submissions myself. Here are a few reasons why I suspect that batats may have cheated in some recent contests.

1. Rapid Rating Increase

He registered on Codeforces 5 years ago and stayed at newbie level for a very long time, with his rating never exceeding 1200. However, during the last 2 months, his rating suddenly skyrocketed.

He went from 1107 rating after Educational Codeforces Round 188 to 2107 rating after Codeforces Round 1099 (where he achieved rank 2) in only 6 contests.

Of course, rapid improvement is not impossible. Some people improve very quickly. However, after looking at his submission history, the jump feels suspicious. Earlier, after around 2 years of practice, he was still solving only about 3 out of 7 problems in Div. 2 contests, meaning his improvement during that entire period was relatively small. But only 2 months later, he suddenly solved 6 out of 6 problems in another Div. 2 contest, which is an enormous leap in performance.

In other words, the improvement he showed in those 2 months was much greater than the improvement he showed during the previous 2 years.

Maybe it is legitimate, but the improvement speed is unusual enough to raise questions.

2. Sudden Changes in Coding Style

Another thing I noticed was the inconsistency in his coding style.

In the first 4 contests among these recent rounds, his code looked very cluttered:

  • compact formatting,
  • very few spaces,
  • dense implementation style.

Then, in the 5th contest, he suddenly switched to a completely different style. While changing templates is perfectly normal, the way he wrote code inside main() and other functions also changed noticeably:

  • cleaner formatting,
  • much more spacing,
  • overall more readable structure.

But in the 6th contest, although he still used the new template, he immediately went back to his old cluttered coding habit.

That sudden one-contest-only change feels strange. Usually, coding style is one of the most consistent habits for competitive programmers.

Again, this is only suspicion, not proof. There may be completely legitimate explanations for all of this. If batats wants to clarify anything, he (or she) is welcome to respond in the comments.

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

»
3 weeks ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
3 weeks ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

I found this person from the same university, MIDORIYA_, who also ranked highly in the same contest. It seems suspicious that he solved ABCD in only 2 minutes.

  • »
    »
    3 weeks ago, hide # ^ |
     
    Vote: I like it -52 Vote: I do not like it

    The contest started normally for me, but my internet connection suddenly disconnected during the round. That can happen to anyone in an online contest.

    I continued solving the problems offline, and once the internet came back, I submitted the solutions normally. That is why several submissions appeared close together.

    Also, solving multiple problems in a short time is not unusual for experienced competitive programmers. I’m already a Candidate Master on Codeforces and have a strong competitive programming background, so my performance is completely consistent with my level.

    My submission history, code style, and previous contest performances clearly show that the solutions are my own work.

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

      Okay.

      Submission 1 (TLE)

      Submission 2 (AC)

      Compare between the two submissions.

      Can you explain how you managed to change your code entirely in less than 3 minutes into the AC code? From what I see, you extended variable names, such as:

      changes

      which makes no sense. Were you adding more clarity so you would remember what the variable names meant? You are literally fixing a TLE.. in 2-3 minutes..

      And apart from the variable names, how did you change all that code in less than 3 minutes?

      Also, can you explain why your loops change their structure?

      All your loops in the TLE submission used this structure:

      for( ; ; ) {
      
      }
      

      Then, they changed into this structure, in the AC submission:

      for( ; ; )
      {
      
      }
      
      • »
        »
        »
        »
        3 weeks ago, hide # ^ |
         
        Vote: I like it -76 Vote: I do not like it

        I already knew where the TLE was coming from in my code, so fixing it in a few minutes is completely normal for anyone with experience in competitive programming. When you understand your own logic and know the bottleneck, you can optimize it very quickly without rewriting everything from scratch.

        As for the variable names, I intentionally make my code more readable sometimes. A lot of juniors and friends use my solutions as references while training, so I prefer leaving the code documented and understandable instead of keeping variables named like puzzles nobody can read.

        Changing names like 'cur_sum' to 'current_sum' or 'vals' to 'values' is literally just improving readability. That is not evidence of anything suspicious.

        And regarding the loop structure and formatting changes, that is completely normal too. Sometimes I put braces on the same line, sometimes on the next line. During contests, people constantly reformat loops, move conditions around, rename variables, and clean code while debugging or optimizing.

        Trying to use formatting differences as “proof” of cheating honestly makes no sense. All it proves is that the code was edited and cleaned while fixing the issue.

        • »
          »
          »
          »
          »
          3 weeks ago, hide # ^ |
          Rev. 3  
          Vote: I like it +22 Vote: I do not like it

          Listen. I know some cheaters may change, but you've been doing it continuously to the point where it's crystal clear to see you're just bluffing.

          Your account has 2 (edit: $$$5$$$) skipped contests. You have an alt, __Midoriya__, which also has a skipped contest. Let's see what new excuses you have for that.

          You fixed your TLE code in $$$ \lt 3$$$ minutes, but instead of immediately getting AC, you decided "No, my friends are going to practice using my submissions. I have to change my variables. vals and cur_sum are too ambiguous, they won't understand what vals and cur_sum mean."

          310134426

          310135773

          Compare between both of these submissions.

          You submit an obvious TLE code, which is just brute force, probably hoping that it will pass for any reason. Then, in less than 3 minutes (again), you suddenly get the idea, implement it, and submit it. You clutch the problem at the last minute of the contest, and only in 2.5 minutes!

          But yes, every single piece of evidence of you being a potential cheater is all just random accusations. You have a very strong competitive background, shown by your 6 skipped contests.

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

            Actually, it’s 5 skipped contests — or 6 if you also count the skipped contest on his alt account.

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

          Is this your "strong competitive programming background"?

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

        Often people participating in contests have little time and need to submit solutions quickly, so changing the style is understandable.Also, I don't think that accusing person in cheating without clear evidences is polite form of communicating.

  • »
    »
    3 weeks ago, hide # ^ |
     
    Vote: I like it -34 Vote: I do not like it

    It’s funny that an account registered 8 months ago with almost no activity, only one solved problem, and no real contest participation is suddenly acting like an anti-cheat expert.

    You barely have any presence on the platform, yet you are confidently accusing people who have years of competitive programming experience and public records of achievements. Random accusations without proof only show ignorance.

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

      Truly impressive how majority of the cheating-related blogs are posted by low rated users.

      • »
        »
        »
        »
        3 weeks ago, hide # ^ |
         
        Vote: I like it -27 Vote: I do not like it

        And somehow the people with the least experience are always the most confident when throwing accusations without actual proof. Funny pattern.

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

        Yes, because they use an alt account not their main.

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

        Hello MR. high rated user

        Something that is also truly impressive is how similar your solution for D is to a lot of other submissions, for example:

        Here is your solution:

        https://codeforces.com/contest/2231/submission/375525929

        and Here is a one that's way too similar:

        https://codeforces.com/contest/2231/submission/375522608

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

        Well, you probably shouldn't be talking about cheating at all. Almost everyone in the your college knows about your competitive programming journey. You're a first-year student who only started competitive programming in January. In the offline Insomnia contest, you managed to solve only three problems, and those were among the easier ones. For context, even participants with Specialist ratings were solving only 5–6 problems in that contest. Yet somehow, everyone watched your rating skyrocket in a remarkably short period of time. Your rank suddenly jumped from 6826 to 975, and after that you started consistently appearing in the top 1000. You have only around 300 solved problems, and your maximum rating is 1981. I don't think I need to say much more than that.

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

      You are marked as a cheater from the cheater database by the way.

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

      it is also funny that how you are defending your stupidity. how fast are you to be able to solve C in 9 seconds and then in one 1 minute you solved D in last div2.

»
3 weeks ago, hide # |
 
Vote: I like it +2 Vote: I do not like it

In my opinion, this person dropped Codeforces for two years, but trained in other platforms such as Atcoder or Vjudge. So this may explain why his coding style changed through time and why he performs well.

»
3 weeks ago, hide # |
 
Vote: I like it -32 Vote: I do not like it

This entire post is based on assumptions, not evidence.

Improving quickly is not cheating. Many competitive programmers spend months learning silently, practicing outside Codeforces, studying editorials, joining training camps, or grinding virtual contests before their rating suddenly increases. Rating graphs are not linear.

Also, changing coding style proves absolutely nothing. People switch templates, formatting habits, IDEs, snippets, or even coding environments all the time. Some write messy code under pressure and cleaner code when calm. That is completely normal in competitive programming.

What is actually suspicious is spending hours stalking someone’s submissions, formatting style, and rating graph just because they improved faster than you expected.

If there were real proof, moderators would handle it. But making public accusation blogs built on “his spacing changed” and “he improved too fast” is weak and embarrassing.

  • »
    »
    3 weeks ago, hide # ^ |
    Rev. 2  
    Vote: I like it +65 Vote: I do not like it

    A cheater defending another cheater

    Just compare his submissions to the one ranked 1st, both have the same solutions in multiple problem with just few modifications

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

    Thanks for 5 skipped contests!

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

    if you were normal user, nobody would care about your rating graph or submissions but when it comes to rating, real proof of seeing how i developed then yes, we are stalking cheaters. get the flip out of my face. look at this shameless, stupid solved C in 9 seconds and then D in 1 minute, talks about moderators' actions. and by people i guess you meant yourself, nobody actually changes coding style during contest because if you were really a person who knows what is competetive programming then you would know that during live contest you shouldnt change the things which you practiced on(for example your template). for me, best option for you is just to shut up, you are making proofs of your cheating even stronger.

»
3 weeks ago, hide # |
 
Vote: I like it +19 Vote: I do not like it

maybe he forgot codeforces and learning coding to advance and came back to skyrocket his rating like comeback

»
3 weeks ago, hide # |
 
Vote: I like it +29 Vote: I do not like it

Everyone is a cheater unless proven otherwise in an offline controlled contest.

»
3 weeks ago, hide # |
 
Vote: I like it -95 Vote: I do not like it

Hi, I appreciate you raising your concerns openly rather than silently reporting. I tried to reach out to you privately first, but since there was no response, I'll reply here — though honestly I'm not really concerned with proving my improvement to anyone, but it's okay.

Regarding the rapid rating increase: Yes, I was inactive on this account for around 3 years. During that time, I was not idle — I was studying competitive programming seriously on another platform, training other students, earning certifications, and competing in ICPC-style contests like the ECPC where I achieved good standings. My professors at my engineering university even recommended me to coach newcomers. I started competitive programming at age 12, and naturally, studying engineering has significantly strengthened my mathematical and algorithmic thinking. The improvement is real, just not visible on this specific Codeforces account because I was active elsewhere during those years.

Regarding the coding style change in contest 5: This has a simple explanation. In all contests except the 5th, I was coding using OneCompiler (onecompiler.com/cpp), which is a web-based editor with no auto-formatting — so the code looks exactly as I type it. In contest 5 specifically, my personal laptop had issues so I used my twin's laptop which has CLion installed with auto-formatting enabled. That's why the code looked cleaner and more spaced out in that one contest — it was the IDE formatting it automatically, not a deliberate style change. In contest 6, I was back to OneCompiler on my own setup, hence the return to my usual style.

I understand how this looks from the outside, and I don't hold any grudge for the suspicion. But I hope this clears things up.

  • »
    »
    2 weeks ago, hide # ^ |
     
    Vote: I like it +5 Vote: I do not like it

    Ain’t no way bro became a Codeforces Master while still coding on an online compiler

  • »
    »
    2 weeks ago, hide # ^ |
    Rev. 2  
    Vote: I like it +6 Vote: I do not like it

    How can you prove that you "competing in ICPC-style contests like the ECPC where I achieved good standings"?

    UPD: A friend of mine told me that "btats said he participated in the past years in the ecpc and somethings and got high ranks , he can't prove that as that's his first year in the uni so he didn't participate in anything yet , acpc teens he just participated one time and didn't qualify or got any ranks , same for eoi he participated only one time and didn't make any rank he is just using that as an excuse to say he is a pro but that's not true at all". If you cannot provide real evidence, then it only makes your claims look false.

»
3 weeks ago, hide # |
 
Vote: I like it +13 Vote: I do not like it

He registered on Codeforces 5 years ago and stayed at newbie level for a very long time, with his rating never exceeding 1200. However, during the last 2 months, his rating suddenly skyrocketed.

I think this soudns a bit disingenuous. You simply do not mention the fact that, before this last 2 month comeback,batats had not done a single contest for 2 years before.

  • »
    »
    2 weeks ago, hide # ^ |
     
    Vote: I like it +5 Vote: I do not like it

    Then how did he go from solving only 3 out of 7 problems in a Div. 2 round after two years of practice to suddenly solving all 6 problems in another Div. 2 just two months later?

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

      Look at khba. After just 2 years, he got +1100 ratings.

      Edit: I'm not supporting cheaters, I'm just showing a fact.

      • »
        »
        »
        »
        2 weeks ago, hide # ^ |
         
        Vote: I like it -8 Vote: I do not like it

        No, I'm pointing out that after 2 years, he could only solve 3/7 problems in a Div2, meaning his improvement was relatively small. But just 2 months later, he solved 6/6 problems in another Div2, which is a massive jump. In other words, the improvement he made in those 2 months was far greater than what he achieved during the previous 2 years.

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

      I don't even disagree with your main point, I'm just saying that this is a "Weak link" in your argument, and that sometimes, people ignore good arguments just because they have "weak links" and things like that (it's called the fallacy fallacy)

»
3 weeks ago, hide # |
 
Vote: I like it +29 Vote: I do not like it

I sent him after reaching master to tell me which model did he use but he did not respond. Bro did not want to share his key of success.

»
2 weeks ago, hide # |
 
Vote: I like it +26 Vote: I do not like it

Here's evidence against batats as well.

371017292

371018157

Compare between both of these submissions. How can one change all that in $$$1$$$ minute and $$$51$$$ seconds?

And of course, just like MIDORIYA_, he changes the variable names. badj becomes black_adj, num_black becomes blacks, and so on. I wouldn't be surprised if he's also adding clarity for his friends to learn from his submissions, though I'm not sure why num_black was a "puzzle that nobody can read".

»
2 weeks ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

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

»
11 days ago, hide # |
 
Vote: I like it -8 Vote: I do not like it

I already posted this comment on MIDORIYA_ blog, but I want to say it here once again.

He has been the Vice Head of his university's ICPC community (HNUICPC) for the last three years and is in charge of problem setting and technical activities. Honestly, it's hard to understand how someone with proven cheating violations could stay in such an important position for that long. ICPC is supposed to be about fair competition and not supporting cheaters, yet a confirmed cheater has been one of the people leading the community for years. That doesn't just reflect badly on him; it raises serious questions about HNUICPC and how this was allowed to happen in the first place. Something clearly seems wrong when this kind of behavior is tolerated at the leadership level.

»
14 hours ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

He promised he'd paricipate in today's Div and record everything. Instead, he vanished 10 minutes after the contest started, came back over an hour later, and then spent 20 minutes between solving A and B. This from the guy who claims he used to casually solve 5–6 problems in a couple of minutes. The level of consistency is truly inspiring. Looking forward to the record, if it survives whatever excuse gets invented next