I think many people now hold such an idea: LLMs have already historically defeated CP, and catching those cheaters is only useless effort. The fairness of CF and the value of rating will finally disappear.
But, is CP the first game where humans were defeated?
Long time ago, Deep Blue defeated chess, AlphaZero defeated Go, scripts and mouse macros defeated FPS games, and GTO defeated Poker. The fact is, chess developed faster time controls that are harder to cheat in. Thousands of millions of real money still flows on poker websites. FPS game companies rely on automatic detection and community anti-cheat to continuously reduce the percentage of cheaters in the game, until it reaches a level that can basically be tolerated.
In this article, I list some anti-cheating methods that I know. Maybe not all of them are feasible. But what I want to express is that we still have many methods to defend the purity of the CP community.
1. KYC (Know Your Contestant) & VP (Verified Player)
First, we need to recognize that there is a huge cost asymmetry between cheating and anti-cheating today.
Because of some kind of insistence on “open-source spirit”, Codeforces still has no effective restriction on one person registering multiple accounts. In every contest, there are thousands of alternate accounts joining. Obviously, the energy of CF managers is limited. They pay more attention to removing cheaters within the top 200, and have to tolerate huge cheating in the rating range below 2400.
However, most ordinary users are the ones who support the Codeforces community. They might also become future GMs or even LGMs. Hurting their feelings toward CF will certainly harm the future of the community.
I think firstly one phone number should be limited to only one CF account. If you want to cheat, then you should be prepared to lose the convenience of using CF later.
Second, we should allow users to become further Verified.
The standard of Verified, in my definition, is that you can prove your strength through a trusted third party, or that if you are found cheating, you will pay a relatively high cost.
To become Verified, one needs to satisfy any one of the following conditions:
- Verify an award from any offline contest, such as ICPC, UCup, OI in any nation, like NOIP or CCO.
- The account was registered before the LLM era, for example before 2025, and already had a rating close to the current level at that time.
- Complete student verification and confirm that you are a student of some school, so that the community from the same school can play a role of supervision.
- Pay for the account.
When calculating the final rating, Verified players will only be calculated based on other Verified players, and non-Verified players will be “skipped”. Non-Verified players also use Verified players as the standard, but they will not have an influence on the latter. (which means, the rating of a Non-Verified player is based on his performance against other Verified players)
After that, we can selectively ignore anti-cheating review for non-Verified players.
Through this method, non-Verified players can get a fake rating to satisfy their vanity, but they will no longer hurt other honest players. At the same time, the experience of new players joining contests and getting rating will not be affected.
2. Hack the Cheater
A large number of honest CF users have already mobilized to find cheaters, and summarized many features of AI, such as overly engineered naming, overly defensive programming, and so on.
Unfortunately, the enthusiasm of these users has not been effectively used for now.
I want to introduce the anti-cheating experience of Perfect World Platform in CS2. It is mainly divided into two types:
- PAC, or Perfect Anti-Cheat. The official side collects features through automatic programs, with human intervention.
- CAC, or Community Anti-Cheat. It is a community formed by green players, similar to a jury system, which evaluates and votes on recordings of suspected cheaters.
First, Codeforces should open a report function, allowing users to submit evidence of suspected cheaters. After that, other Verified players can review the code of reported players and vote.
This process may cause false judgments. Therefore, we can use a mild method for damage control. If a player is judged by the community to have cheated in this contest, this player will not affect the rating of other players in this contest. But he himself can still get rating normally, and there will be no display on his profile.
The case will be further submitted to administrators with higher authority, who will make further decisions.
3. Possible Future Anti-cheating
Anti-cheating from the source of LLMs may be very hard, but it is also the most effective.
Take Poker as an example. The largest GTO provider, GTOWizard, has always cooperated with major poker websites and provided methods to detect cheating, including checking whether some hands were queried in GTOWizard, and whether the actions of players match the suggestions of AI.
During the Chinese Gaokao (National College Entrance Exam), many local AI companies closed image recognition functions and refused to answer questions that might be related to exam problems.
LLMs do not only affect Codeforces. They also affect the fairness of exams around the world. Maybe in the future, there will be a database jointly maintained by global educational institutions. They can upload exams that are currently happening, and LLMs can check the database before answering questions, then choose whether to refuse answering.
This will not be pushed forward by Codeforces or some university alone, but will be produced by cooperation of the whole society.
Final Words
CP and Codeforces were once my belief, because it is open to everyone, and is always objective, fair, and equal. Anyone has the chance to realize himself. I absolutely do not want to admit that it will be easily defeated by technology.
I sincerely hope that everyone can restore confidence and solve this hard problem together: to defend the sacredness and honor of our cause.








Auto comment: topic has been updated by piaoyun (previous revision, new revision, compare).
This is terrible to be honest. Verifying an award only works for like a tiny percent of the contestants. Would someone being ranked 100th on the Egyptian Collegiate Programming Contest prove they are expert for example?
Student verification won't work as well because not every school has a community interested in CP; additionally, even if they do, some of them may still lie. Maybe asking for a student account may be a slightly better idea.
Paying for an account is even worse. Imagine just starting to grow interest and then finding out you must pay to be able to compete; this will most likely drive you off. Other than that, some countries makes it hard to pay with anything other than their native currency.
I kinda like this part
I think a way it can be done is to have some software tracking what you do during a contest (maybe the tabs you open or the things you copy and paste) or a slightly less invasive IDE/code editor extension that tracks what you write. If you don't use it or if it fails for some reason, you become an unofficial participant, and for each room the contest setter assigns the top participant of that room (or maybe some other volunteer) that is not a cheater to review the rest of the room after the contest; this will help in finding the cheaters that go under the radar.
I completely oppose the idea of having a plugin that tracks your computer, and I believe I'm not the only one who feels that way. Also, even if there was an extension that tracks what you write in your IDE or text editor, that wouldn't be useful anyway. I can just open any AI tool from another device and type what it spits out line by line manually.
The best way is to have a community voting system that anyone can start against one, which will let people see and vote if the code is AI-made, but again, this can be gamed and can be used against people.
Lastly, I don't know if there will be enough people who are dedicated (or care) enough to sit through the entire contest and look for people's submissions. This one is better than the previous suggestions, I suppose. I know I haven't added much to the solution, but I wanted to voice my opinion.
Can't argue with that, but I feel like it will still minimize it a little; a newbie writing a segment tree would take a lot of time compared to just copy-pasting it.
Considering how many cheaters blogs you see after each contest, I assume there will be, additionally There are like 30 participants per room, so it would take about 15 minutes after the contest to check, but the hard part would be finding someone in each room to check submissions (there were about 580 rooms last contest), but even if only half rooms were covered in each contest, you are in a different room each time so cheaters will eventually get caught.
I think it is allowed to have templates in codeforces contests, so a newbie can legally get a segment tree template from somewhere and modify it (not everyone defines macros in their editor).
I do not want a mob (exhibit 1 exhibit 2 exhibit 3) having ban powers. Existing system of community flag + admins review and ban is fine in my opinion.
Mob having banning powers will be like how students have to ruin their works just to make it look Non-Ai to their teachers/Professors.
Its way too dangeorous!
Your comment makes sense. Truly, third-party awards cannot be directly mapped to Codeforces rating. However, my understanding is that we do not really need CF administrators to judge whether such an award matches someone's rating.
If a person publicly links their account to an offline contest award, they will realize that others can easily compare their online performance with their offline results, and therefore judge whether they look suspicious. This alone may make them less likely to cheat.
Binding accounts to school communities works in the same way. We cannot determine through the screen whether someone is cheating, but their friends and local community may be able to judge based on many pieces of information. The pressure from a real community can create a kind of shame-based moral constraint.
In short, I believe anonymity greatly encourages the desire to cheat, while connecting an account with real life can reduce that tendency.
As a follow up, does being on the Egyptian IOI team for multiple years prove someone is a grandmaster?
:)
i can't care at all because of the disaster happened during goodbye 2023
Nah. "We need everyone to KYC" is the laziest and worst of the solutions to any problem. Papers, please?
Besides, I already used many services that "require" this for "safety" and guess what, I pay 0.15 usd on a random site and get an instant phone verification.
small try is better than nothing
Just curious enough, I saw your CF profile, and you reached expert level just after giving your first four contests. I am too not new to programming but still could reach only till pupil after giving 6 contests.
There are a lot of cheating blogs, and when I read them, I always have a question: how will the anti-cheat system detect cheaters who just ask an LLM to come up with a solution and then write it themselves? Or just ask an LLM for a hint?
I understand that grays and greens will most probably just copy-paste code, but more experienced users can solve a problem with just a brief idea of a solution.
To be honest, I understand the extent of a problem, but I think there is nothing we can do to stop this.
True, it's hard to do much about cheating now. Been a while, but back in the day, it was real fun when you'd trolled cheaters as the contest author. You're an absolute legend, mad respect from everyone in my competitive programming circle!
How about we just catch those grays and greens first? You do realize how big of a problem just those people are right.
Perfect is the enemy of good, please stop spreading bad messages that needlessly demotivate people.
But what he is saying is true, and I think they are actually trying as much as they can for people who copy paste LLM solutions, but the thing is, ultimately not much can be done.
Strong agree. I feel a majority of cheaters are the copy-paste type -- half the standings bloat can be removed if we could catch them reliably.
More experienced users, the type who could implement a 3000-rated after a hint -- they have real skills after, and maybe I'm being optimistic, but I think they would have the basic honor to not cheat. Sure, there will be exceptions, but much fewer.
Can you reliably distinguish between AI-generated and human-written solutions? What is the success rate of your AI-detection tool?
I understand that dreaming about a bright future is fascinating. I once asked what the real proposals are to fight cheaters, and got nothing in response. Is it good to fight cheaters? Yes. Is it good to fight only stupid copy-paste cheaters? Yes. But can you effectively detect them?
I’m told to stop and not demotivate people. Demotivate them from what? From searching dozens of cheaters manually, when there are thousands of them?
Yes. I can catch so many obvious cases reliably, and the only thing stopping me is a lack of knowledge on who to tell about it.
Am I going to tell you exactly what I look for in this public thread? No. Obviously I'm not. I'm sure you are capable of figuring out why.
Please have the humility to understand that people know what they're talking about here when they say they know what they're talking about.
I asked whether it is possible to make a system that can detect thousands of cheaters in every round, and you say that you can catch so many obvious cases reliably. How about checking hundreds of thousands of submissions every week? If you can do this, well, maybe you should reach out to Codeforces admins and help them with a reliable automatic anti-cheater system? I'm sure they would be glad to use it.
All I want to say is that an anti-cheating system is very hard to make on this scale. Every time I bring up this argument, all I hear is 'I can detect cheaters.'
Even an anti-plagiarism system that can work on this scale is very difficult to make. I know a person whose graduation thesis was exactly about this. I even wanted to test his work on one of Codeforces rounds, but this ended up not so well, because cheaters are smart and plagiarism checks are somewhat computation-heavy. AI-cheating is about ten times harder to detect, if we are not talking about somebody with comprehensive comments in their submissions.
P.S. Every time you answer my comments, you talk about 'humility,' 'moral high ground,' and 'it is not your place,' as if I'm not giving arguments, but arrogantly bragging about something. I can have my own opinion on every topic, including this one too.
Your fundamental flaw is the mindset of "I can't make a computer provably solve every case to completion today, therefore it's not worth anyone to try". You trying to attack this problem from the sole goal of creating an automated system is making it too difficult, and dooming it to failure. And ultimately scares anyone out of just trying the simple things.
Things happen through the act of doing something at the start. Even if I don't have an automated program implemented, who says I need one? Let it be manual for now. Maybe only 100 people are banned this time. Who cares? It's more than the zero otherwise. And the number will grow as more people do it.
And if enough patterns are extrapolated, then maybe automate it. But my main point forever has been that having enough people do it manually is enough of an untapped power source.
Just look at the standings of the most recent round. Even a very basic heuristic like : "If performance in contests in the past 3 months is <= 1000 rating, and suddenly the performance in the last 1-3 contests is >= 1900 rated, they are probably a cheater" will get you 100's of cheater accounts.
This is just an example, but I'm sure people experienced with ML can come up with much better models (based on performance change, coding style, etc.) which provide a much higher accuracy, and "dubious" cases can be handled by a human-in-the-loop.
Like come on, chess.com and similar websites have the same problem : someone seeing the moves from an engine. And they did manage to come up with a reliable system.
It is praxtically impossible to find such cheaters: however cutting off 99% of cheaters or even just 50-75% is already an amazing result. Let perfect not be the enemy of good.
The problem is that every measure to catch cheaters is also going to drive a portion of innocent users away from CF. And I would bet that the ratio of innocent people leaving to cheaters being affected is at least 5:1 if not more. Any verification method (phone/subscription e.t.c.) can easily be bypassed and would only make cheating pay to win, not eliminate it completely. Any software tracking is also easily bypassed — you can literally take a photo of the statement and feed it into an LLM from your phone. Even tracking someone's router doesn't guarantee that the person hasn't cheated in any way.
Cheating in CP is objectively much harder to track than cheating in something like FPS shooters or even chess. While you can catch guys who Ctrl+C Ctrl+V from an LLM — catching someone who just prompted an LLM to find observations or even to solve the problem on paper is the real problem here, and I don't think it is truly solveable with any methods that have been suggested so far.
Though I should say that having a community review system is a good idea — games like CS or GeoGuessr have it and I don't see why we shouldn't. At least people who cheated will no longer be able to take advantage of their rating to become community leaders or (god forbid) coaches, and we will no longer have cases where someone is known to be a cheater and remains unbanned for a long time despite community outcries about them.
Well said.
[terrible-ideas-discuss] Let's drop some unfiltered ideas here!
I'll start.
Aside from the global top-100, make ratings private, so that only you can see your rating.
That is actually very close to what he proposes in this blog.
why can't we do like verification with national id card/ live camera and also phone number it might cost a lot for national id card verification but community will get a lot better
Good suggestions. Just move your suggestion 1 down to be number 3. It's your weakest idea thus far and is really not worth anyone's time to implement yet.
As in yes, demonstrably there are people that manage good onsite results despite being cheaters. And even more that had a legitimate record and recently started cutting corners. I trust you see the issues now, and understand why your weakest point was the one you chose to put first.
The entire thing is an awful idea!
Competitive programming isn't like chess where you have a FIDE recognized onsite tournament here and there for participants in almost every age category. And even then, if you look at chess websites, separating a pool for verified and unverified contestants isn't even done there (sure, they get a tag or something, and maybe access to some exclusive tournaments, but nothing else, they lose rating when they lose against unverified accounts as well).
What about people who cannot really participate in onsite contests (For example consider someone like me in the post "LLM era" (I was slightly before it but just consider this), I don't work in the tech industry (neither do I have a comp sci/math degree, nor did I know about IOI before I passed high school), consider the possibility that I become better and reach 2300 or something (I am 1970, If I dedicate to this hobby, I think it is possible to eventually reach there), I would still have no way of getting into the verified pool!), also except some measures (like your KYC thing, which I also feel is ineffective) the unverified pool would still be subjected to LLM cheating).
You are essentially restricting quality access to competitive programming for a large group of people, and making it necessary to participate in onsite contests to get the best out of codeforces (which aren't too frequent, and there isn't much awareness in that regard, (and also pay for it, which feels secondary in this case)).
When people who were below cyan used to complain that LLMs were outperforming them, people used to say "just get better, above 1800 or something, it isn't that hard". Now when you can no longer say that since LLMs are outperforming you, you suggest to gate the community by a criteria that is impossible to fulfill for some people?!
What do you mean by “restricting quality access to competitive programming”?
The Verified Player system does not stop you from solving problems, joining the community, participating in contests, or getting rating. It only removes the negative side effects that one person’s cheating creates for others. For an individual user, the impact on their own experience is minimal.
Let me tell you what really matters. Do you think the resources on Codeforces just grow out of the website by themselves? The reality is: every algorithm community I know is now full of frustration and disappointment. More and more people are starting to give up on Codeforces contests. The number of participants will go down. Then the problem setters who contribute out of personal passion will disappear, because no one wants to carefully prepare a contest for a group of cheaters. Finally, tech companies will stop sponsoring Codeforces Rounds, because rating will no longer have any value as a filtering mechanism.
Isn’t this already happening?
I think having a (strictly optional, although maybe culturally soft-required by the community once you're past 2000) some kind of reasonably difficult to bypass verification (phone verification, credit card) could be a good middle ground that can make everyone happy.
I get privacy is a concern, but everyone already knows my phone and every business I interact with in real life knows my credit card information, and TBH I would trust Mike more with my phone number than linkedin or meta lmao
This is better, but I think you still cannot do anything about people who would ask an LLM for solution and implement it themselves (someone above 2000 rating will probably do it easily (if they intend to reach higher they will probably do this), and if their intention is to get a job or something, they will camp on the rating and stand verified). So I think it doesn't make much of a difference.
Yeah that's a good point, probably fairness on online rounds will just inevitably suffer. Although I don't think very many people will be doing that (real life collaboration on actual rounds is not allowed and has existed for way longer than LLMs but that doesn't seem to be as big of a problem)
I think at this point in time, people who ask for solution and self impl cannot be stopped to any extent unless they screen record or onsite which obviously for cf is not feasible. idk tho
I specifically included the word "quality" here.
Since your proposal would reduce competitive programming to effectively solving problems from the archive for a large number of participants in the unverified pool. (before you restate that they can still participate in contests, It isn't the same, you are just separating the pool of top contestants (solving the problem for them so that they don't have to deal with people using LLMs during contest) and leaving the unverified pool in a state of anarchy (I don't think you will be able to control cheating for the unverified pool))
You highlight the involvement of tech companies, I understand they positively influence the competitive programming community. But I am very much against having it as a "filtering mechanism". I think this very idea of having it as a filtering mechanism serves as motivation for people to cheat.
(I highlighted how on a chess website you don't really gain much by having a high rating, so there isn't much incentive, but since some tech firms have it as their filtering mechanism (or people think so), people have an incentive (if that is true, I don't blame the people who cheat then, it sounds immoral, but it is true, if you have seen online assessments for any firm being held in colleges, you would know how normalized cheating is there, a normal candidate cannot clear the online assessment without cheating in most cases (and a huge percentage of them cheat, so the difference between two people with same skill set can be cheating, why won't anyone cheat if that gets them a job in the real world, they are not doing out of passion))).
I personally think that firms don't intend to use it primarily as filtering mechanism but instead as a means to appeal to the competitive programming community. (Codeforces should be an accessible avenue to practice competitive programming for enthusiasts, not a recruitment pool of some kind)
As for problem setters who do it out of passion, I understand that they are losing motivation but what you are proposing is a very bad solution to this.
As for participation, your idea will impact it quite a lot already, (I think even if your idea is not implemented, anyone who prepares for onsite contests would still use problems from codeforces to prepare to some extent or have fun).
There is a severe problem with LLM cheating, that doesn't mean we should implement naive solutions like these.
I don’t think you have correctly understood my proposal. There is no separate Non-Verified pool that Non-Verified players have to face either. Please read it again:
As for:
No, that is just your own wishful thinking. It is even self-contradictory with your own argument.
If the filtering value of rating should not be protected, then why do you think Non-Verified players would be affected in any meaningful way? In fact, why would you need anti-cheating at all?
Fair enough, that is much better (calculating ratings based on the verified contestants), then but I am still not convinced that this is a good solution, you are just dividing the community based on a criteria that some people can never fulfill (and only a small minority will ever do that).
As for the wishful thinking part, I think you are the one who is doing wishful thinking here. I do not wish to explain why it is not a good filtering mechanism here. (they should use your "verified contestant" criteria as a filtering mechanism if they wish to, not codeforces rating, I think that is enough for almost every firm that wants to hire competitive programmers)
The self-contradictory part is also not correct, you are trying to say if I don't consider it as a filtering mechanism, I should not care about being "verified".
But you are affecting the psychology of people who just enjoy competing in competitive programming competitions (and cannot really do it on-site), the same thrill of directly competing against other contestants just doesn't exist, knowing you have no effect on ratings of other contestants, you are bringing down the status of non-verified contestants to participating unofficially and are trying to hide it by giving fake ratings (also the verified contestants will likely be much stronger, so you will have problems in which a genuine non-verified contestant struggles (being in-experienced) and almost all verified contestants breeze through, which is not good for a beginner, so this fake rating would under-rate a lot of (I would say a majority of) non-verified contestants).
If you want to turn every competitive programming website into a talent pool for firms, I suggest starting out with a platform exactly for that purpose and not ruin codeforces or other platforms.
This is also simply not true. Just go play one non-Prime CS2 match and see for yourself.
I think chess is closer to competitive programming than CS2. (they both are different from competitive programming, but chess is closer)
So, it is not fair to compare with CS2 in this regard, since the contestants/players are completely different and do it for different reasons.
Just start giving hardware Ban.
Remove the credibility of rating and colour of the handle, until the player reaches Div1
If we stop account spamming
and strict account creation conditions majority wont even try to cheat
Every account should be verified by a government proof of the country and this will allow we cant duplicate account . or else we can allow up to 2 0r three new account max
Also hardware Ban , or Custom IDE are other options
Auto comment: topic has been updated by piaoyun (previous revision, new revision, compare).
Instead of focusing on high cost of cheating. Why not take away high reward for winning?
For those doing it for fun, private ranking is still great motivation.
For those doing it for their resume, in-person contests are still a thing.
Setting rating private is like being well dressed in the night. I think this will def harm the motivation.
Essentially we keep the current system exactly except heuristics are used tk detect (but NOT ban) cheaters. Then their rating is frozen but not skipped: on leaderboards or for someone else their rating remains the same as before the shadowban, but to them it is as if they had participated in the contest. If they are proven innocent their rating goes back up to what it is supposed to be to everyone
I feel the goal should not be to ban all cheaters, but rather to ban the 90% of cheaters: the ones who are easy to catch . This alone will discourage cheating from other people and essentially only make cheating accessible for people willing to pay, or people who are smart enough to use VPNs, fake phone numbers, change codez etc (and likely would bypass most mechanisms short of direct face recognition)
imo game is now between developers and cp ppl , lmao
best would be finding ai ppl's after the contest , if a person with lower rating solving div1 , do the rating to zero , that's simple. no hard bound complex logics, just simple checks.