Предисловие
За последнее время было предложено достаточно много различных способов, методов и советов по борьбе с читерами, которые отчасти могут дать положительные результаты на короткой дистанции, но на перспективе ситуация может перейти в другую плоскость, в которой читеры станут только умнее и найдут нужные "ключи" к тому, чтобы продолжить быть безнаказанными на этой платформе.
Почему основные идеи не работают в долгосрочной перспективе
Анти-плагиат и тайминги
Быстрый код от LLM выглядит "человечески" за счёт стандартизации стиля кода, заготовок кода функций, использования сокращенных названий переменных и т.д., а адекватные задержки между отправками довольно легко эмитировать, контролируя время отправки других участников.
SMS-верификация
Онлайн-сервисы одноразовых номеров, аренда дополнительных внутренних номеров у операторов связи сводят её к формальности. Поймите, что, кто заходит на CodeForces или хотя бы имеет немного желания в чём-то разобраться, точно догадается, что уже давно на рынке практикуются онлайн-сервисы для одноразовых смс-активаций или верификации по звонку при необходимости. Стоит это сущие копейки, можно арендовать номер на N-ый период времени или даже в том же МегаФоне (кто из России, тот возможно понимает) выпустить дополнительные номера на родную сим карту за какие-то 2 рубля в сутки. Такая система защиты по номеру телефона не будет на текущий момент совершенной и точно не сдержит нарушителя.
Жёсткий бан
Пользователь, потеряв рейтинг на начале его пути, просто создаст новый аккаунт и вся история начнётся заново, а те, кто этим промышляют уже давно и имеют высокий рейтинг, уже в курсе о ключевых моментах, на которые стоит обращать внимание, чтобы не отправиться в бан.
Основная идея — не банить, а скрывать!
Идея про введение системы репортов ранее уже выдвигалась, но я хочу её форсировать. Давайте введём систему отложенных репортов и лайков от доверенных пользователей (>2000 elo), благодаря которым будет коррелироваться траст фактор условного подозреваемого. Мы не будем банить пользователя за то, что он проявил подозрительную активность в каком-то из раундов. Какой смысл нам это делать, заставлять думать, на какой задаче и в чём именно он "прокололся", когда можно просто заставить его верить в то, что он в очередной раз не попался в руки правосудия и ему удалось всех обмануть. В то же время его аккаунт будет скрыто помечаться так называемой меткой и все последующие соревнования в его лице будут проходить отдельно от общего пула участников, но при этом читер продолжит видеть "свой" рейтинг и место в общем топе. Его очки не будут учитываться в основной таблице при подсчёте позиций и рейтинга честных участников. Аномальные участники будут перемещаться в "скрытый пул", в котором будут соревноваться только между собой.
Система доверенных репортов
Кто сможет репортить?
Участники с рейтингом более 2000 очков
Пользователи с высоким уровнем вклада в сообщество платформы
Доверенные участники и координаторы
Форма репорта
- Подозрение в использовании ИИ? [Да/Нет]
- Ключевые аномалии (тайминги, стиль кода, нетипичное решение)
- Краткий комментарий
Взвешивание репортов
Репортящий получает "вес", который будет зависеть от его текущего рейтинга, даты регистрации, вклада, точности прошлых репортов и чем выше будут его показатели, тем больше уровень доверия. Соответственно репорты на участников с высоким уровнем доверия не будут сильно влиять на их репутацию, если их не репортят точно такие же участники.
Система лайков и репутации
- Лайки могут ставить абсолютно любые участники с рейтингом и регистрацией не менее 7-ми дней, после окончания раунда.
- Оценка по понятности и читаемости кода, наличии комментариев и их полноте
Механика скрытого пула
flowchart LR
A[Участник] --> B[Соревнование]
B --> C{Сбор данных}
C --> D[Trusted Reports]
C --> E[Лайки/Дизлайки]
C --> F[Телеметрия]
D & E & F --> G[Байес. модель]
G --> H{TF ≥ 0.5?}
H -- Да --> I[Скрытый пул]
H -- Нет --> J[Основной пул]
I --> K[Визуализация (только для читера)]
J --> L[Реальные результаты]
- До контеста собираются репорты и исторические данные
- Во время контеста проводим телеметрию: время разработки, частота отправок программ, навигация по страницам
- После байесовский движок, работающий на базе вероятностей, отталкиваясь от критериев, принимает окончательное решение о выборе пула
UI/UX для "скрытых" и "честных"
Честный участник видит привычный топ и не замечает скрытых "признаков"
Скрытый участник видит фейковые рейтинг и место в общем топе
Модераторы видят график траст фактора в динамике, карточки подозреваемых с подробным логом телеметрии
Система автоматического расчёта траст фактора
Траст фактор будет повышаться или понижаться после каждого завершенного контеста по итогу рассчитанной репутации за отведённый промежуток времени или повышаться в результате ручной проверки модератора.
Как вам идея? Пишите в комментариях, что думаете.









Don't take this comment the wrong way, I think that your ideas are really creative and have great potential. But I do want to share some of my thoughts on improving this
Firstly, if you conceal who the cheaters are, there will also be no way for people to tell who is a cheater. Many cheaters cheat to get job offers or bragging rights, and this doesn't prevent that.
Secondly, "readability, clarity, presence, and comprehensiveness of comments" are things that AI does very good while humans don't (especially when trying to speedrun rounds), so it shouldn't be used in a likes and reputation system. Codeforces already has a reputation system in contribution
Contributing to the community is not the same as reputation, because contribution can be upgraded or downgraded if you have written something on the blog or replied to comments, no other way. And rating will be responsible for decency in solving contests, which will be regulated by reports from other members
bro what the hell are you talking about.How hypocrite can you become.Firstly take a look at your own skipped solution before giving knowledge to others.Talking about so much take a look at your own stuff and dont speak nonsense cheater
never cook again (aka stfu)
you know what buddy i can also abuse like you but i rather not because if i did things will escalate real quick
learn english ;-;
Don't worry, I speak facts in every language — even the ones your brain can't process :)
skipped solution isn't always because of cheating dumbass
Check this comment
You are the one who is speaking nonsense here. His submissions are skipped not because he cheated, but because he has a more recent Accepted submission in contest.
If exposing double standards sounds like 'nonsense' to you, maybe the only thing grand about you is your insecurity.
Sir you are not really getting the point. If you cheat in a contest, all your submissions from that contest get skipped. Also, if u submit >= two AC codes to the same problem during the contest, all except the last submission to that particular problem get skipped.
Thus getting skipped on a problem doesn't necessarily imply cheating, I hope u get it.
Sometimes, if you wrote another AC code while already passed it in a contest, your previous AC submission would be skipped during the system test to reduce unnecessary judge time waste.
Next time learn more about codeforces before you comment.
Which submission are you talking about?
Why you mad, bro? How come you used Python for all the tasks, but solved the last one in C++? Talk about hypocrisy :)
The submission is skipped because i submitted another solution. Maybe study up on how Codeforces works first before making accusations
Can everyone just ignore this cheater instead of wasting your time arguing with someone who doesn't know English or coding?
Funny how you're so desperate for attention that you keep replying to someone you claim to ignore.If I don’t know English or coding, what does that say about you wasting time arguing with me?Maybe focus less on labels and more on logic it might help your next contest
maybe try not cheating, it might help your next contest
yeah i did and i solved 3 in the next contest
python for the first 2 problems and C++ for the last is weird. Also, using stdin for A then input for B is another sign that u could be cheating
which idiot would use this abomination of 3 lines(that was completely unnecessary):
just because i wrote first 2 in python and other in cpp means i am a cheater great. Good job
Why is the second to last bullet point in Russian?
Translation: A hidden participant unsuspectingly sees his rating and place in the overall top (google translate said "illusionically" but that isn't even a word)
Thank you, i was edited already
на бумаге звучит здорово, а что например, если читер создаст второй аккаунт и с ужасом для себя обнаружит, что его основной аккаунт отсутствует в топе, что тогда делать?
Зависит от того, насколько он продвинулся высоко по рейтингу. Если рейтинга много, то скорее всего читер будет в недоумении и останется на своём аккаунте, ибо смысла переходить на другой аккаунт и начинать всё сначала для него уже станет некой проблемой пропорционально значимой для него от затраченного на прокачку аккаунта времени, потому что он по-прежнему не будет понимать, за что конкретно он попал в "скрытый пул". Но скорее всего модераторы платформы быстрее уличат его в читерстве и забанят. Опять же, если он создаст новый аккаунт и на 100% убедиться в том, что его участие никак не продвигается в топе, то он либо уйдёт с платформы, если его цель была именно получение большого рейтинга и доминация над честными игроками, либо не придаст этому значения. Так или иначе у него просто пропадёт бывалая мотивация, на это и расчёт.
That's genius, solves the problem for codeforces purpose at least... Also, don't you think some cheater would get the access to report somehow and get to report innocent people? What I mean is that the number of people with access to the report people should be minimal to avoid such scenarios... which doesn't apply on yer condition of +2000> rating and some contribution. Or making it open to everybody (or at least pupil>) as the idea was, providing a username to avoid repeated reports on same user... (set haha) and get a huge no-life mod team to inspect all of them :)
In my post, I mentioned a criterion called the "weight" of a report, which also depends on the number of false reports made recently. Besides, how many cheaters do you know who've reached and maintained a rating of 2000+? This minimum rating threshold is just an example and could be set even higher. In any case, rating isn't the only factor determining the "weight" of a report.
There are actually more 2000+ cheaters than you would expect because LLMs are so powerful now
I don't even know what to say, I just mostly only see gray, green, and turquoise nicknames getting sent to ban right in the round and those who manage to get away with it
Are you talking about yourself?
I just got an additional idea!
Make a system that tracks unusual rating growth for a user. it can be +300> in 3 contests or idk (im not familiar with unusual ratings)
Unusual growth is pretty hard to define. I had been practicing USACO for several months before I started seriously doing CF. As a result my initial growth was really fast (several ~200 delta contests in a row), though I can assure you I didn't cheat
(at this point I'm putting all my suggestions here ;-;)
So another idea is making the problem statements pdf... because pdf kinda messes up the text format and as a comment i saw before said "even AI can be confused"... I personally experienced the horrific text format on copy-paste of PDF files.
But still these are hopeless suggestions i thought of at 3:00AM :)
You can take screenshots and feed it to the AI. The AI is even better now at reading text from screenshots.
Why cant the reputation based system be made as an external website ?
Most cheaters cheat to get job offers and/or flex, both of which are destroyed the moment evidence of cheating is made public and easily accessible to recruiters and their peers.
If enough good people endorse it then companies too will start taking cheating allegations posted there seriously before hiring.
Because we're now talking about a localized issue specific to this platform, where introducing an internal rating and trust-factor system would dramatically impact the cheating situation overall. Besides, what kind of companies hire employees based solely on their CodeForces account without conducting their own interviews or coding tests? If a candidate demonstrates incompetence or performs at a lower level compared to their CodeForces rating when solving tasks provided by the recruiter, it would simply prove that their rating was obtained dishonestly.
Probably the best solution I've seen on this platform. It's like a "second sort". I think trusted users should be people who actively wrote rounds before the advent of AI, and showed good results(Not newbies, for example)
Did I solve the problem?
I think this is a great solution. If you give feedback that is too high signal, cheating will never become detectable the same way spraying too much antibacterial just leaves the bacteria growing stronger and stronger.
Instead, you can assign each participant a "honesty" value -- crucially, though, rating changes should reflect this. Participants with low honesty values should see smaller gains and bigger losses.
Also, the systems should be largely automatic. I assume the reason many ideas have been floated and none have been implemented by Mike (he really could implement these quickly, if he thought they were big problems) is because they take work over time to sustain. So however you design your anti cheat method, it should be largely automated (otherwise it will never happen.)
Yes! Your ideas will work...!
Interesting and original idea! The problem I see here is that a cheater can create a second (honest) account and after login into this one (or even after not login at all) he can see that "Ups, my other account is not in the general leaderboard where it should be — I must have been detected".
There are however other ways that such reputation system could make life worse for those with low score, like longer queue times. Unfortunately, such annoyances wouldn't take the main incentive, aka rating increase, away.
I understand what you mean. However, it largely depends on how far he has advanced in the ratings. If his rating is high, the cheater will probably be puzzled and stay on his account since switching to another account and starting from scratch would become problematic for him, proportionally significant to the amount of time he has already invested into boosting his account. He would still be unaware of the specific reason why he ended up in the "hidden pool." Nevertheless, moderators on the platform will likely catch him cheating faster and eventually ban him. Again, if he creates a new account and becomes fully convinced that his participation is not helping him rise in the rankings, he will either leave the platform altogether—assuming his goal was purely achieving a high rating and dominating honest players—or simply won't pay much attention to it. Either way, his former motivation will simply disappear; that's exactly the intention.
I still believe that right now there is a significant lack of a system to control multi-accounting. Although such a rule apparently exists, it's currently not enforced at all, and users can register even ten accounts from a single IP address without any repercussions, despite MikeMirzayanov explicitly stating in one of his posts that having multiple accounts violates the platform’s policies. Then why haven't they implemented adequate countermeasures against those who violate this rule?
https://mirror.codeforces.com/blog/entry/124418#:~:text=Creating%20and%20using%20additional%20accounts,a%20company%2C%20etc.).
Since you deleted your other topic to hide my comment, I'll just repeat everything here: You're a cheater yourself, so what is your motive here for posting this?
Evidence: 311116185
Dehashed code by ChatGPT: https://chatgpt.com/share/6810bde2-3cf8-8006-958b-7eddf77ca7ce
Don't bother deleting this one, I'll just create a topic in that case.
yeah, even just after looking at his profile I was damn sure that he is a pro cheater doing some nice try diddy thing !
xd, cool evidence :)
Can I ask how hashing code is useful?
Not really. When I first registered on the platform, I didn't know all its rules at the time, including the fact that you can't send encrypted code. My motives at the time were to test the platform, I was interested to see how the coordinators and other participants responded. But on the other hand, I don't see this violation as an advantage over other participants. Besides, it happened only once in my very first contest and never happened again.
tibinyte2006 this profile is so suspicious, check it
first of all it looks like you're also one of them who're using AI during contest. The code template is different for you in every contest. And in 1 month you became Master. Haha
You're getting compiler error-
Reason- Why I'm pretty sure? you copied from gpt, add your template try to edit code with macros-> hit submit gets compile error.
nice try Diddy!
On the Hidden / Honest Sorting : A cheater will try to see his rankings from some other alt account and he can find it out that his account is hidden in the ranking.
My idea is give rated contest access only to trusted accounts , now question is how do you verify trustability?Appoint some trust checkers ,they will check each particular account's trustability within $$$X$$$ contests periods and give rated contest access accordingly and $$$X$$$ will increase/decrease over time : For example :
first $$$X$$$ contests no rated contest access
if anything suspicious found for first time no access will be given
After $$$X$$$ more contest trustability will be rechecked and new access giving decision will be given
Note : 2nd time suspicious activity will lead to permanent ban
Rules for changing $$$X$$$ : there can be 4 states (bit on the left represents rated access state in previous stage and on the right represents new state) if 0 : no access if 1 : access is given :
0 0 : X+=Z (if not banned for 2nd time suspicion)
0 1 : X=A(where A $$$\le$$$ X)
1 0 : X+=Z
1 1 : X=min(X+B,H)
No need for these things. Codeforces just need to stop copy text and screenshots. It will probably drastically reduce cheating
That is not possible within a browser, it would require a lockdown app
Most of the discussion regarding AI cheating revolves around direct code generation, but what about asking for the idea and implementing it yourself? The actual challenge competitive programming imposes is not about code implementation, it's about the underlying, abstract ideas behind it.
How can you prevent users from asking an LLM for an idea or an approach? How can you detect such form of cheating? I don't see how it's possible without utilizing very invasive methods such as webcam monitoring which are obviously out of the question.
Personally I no longer feel it is reasonable to dedicate the time and effort involved in competing and trying to climb up the ladder while the solution for a problem could be one simple prompt away from me and the thousands of random people I compete against. This might render online competitive programming simply a thing of the past.
I still enjoy solving the problems in an offline setting and think the platform still holds great value even when stripping away the rating and competitions system completely. However, to be frank and respectfully, posts like that strike me as a bit of a cope and failing to acknowledge how the death of free and publicly open online competitive programming platforms is imminent.
Assuming online competitive programming will simply disappear is such unbelievable pessimism imo. First you are assuming the amount of cheaters will be overwhelming to the point of TRULY making it pointless to take part in online competitions.
And, the most absurd to me, you are assuming that a community of 15+ years full of brilliant people will not be able to find good enough methods to stop cheaters.
I don't know, comments like these just sound extremely alarmant to me.
It might not completely disappear but unless very drastic measures are taken and fundamental changes are made to the platforms it will certainly suffer from major loss of quality and trust.
It's not really about the actual amount of cheaters. It's about the mere fact that the actual amount of cheaters remains a mystery. In order for a participant to take their rating or placing within a certain contest seriously and ascribe value and meaning to it (which is what makes competitive systems worthy in the first place), in any competitive platform, they have to have some sort of assurance that cheating opponents are at the very least a rare phenomena even if they exist. When cheating behavior is obvious we can at least find peace in the fact that it is detectable and thus punishable. However I can't wholeheartedly compete knowing that I am actually competing against thousands of random people around the globe which I cannot trust not to cheat when proper cheating is basically undetectable and also so easily accessible.
This could be really helpful,further more,for those who wanna get job through rating,I have an idea,The company could get a hidden permission to get one's true "ranking",thus they could know if the employee were cheating or not
This could be really helpful,further more,for those who wanna get job through rating,I have an idea,The company could get a hidden permission to get one's true "ranking",thus they could know if the employee were cheating or not
Where is chapter 1 btw?
https://mirror.codeforces.com/blog/entry/140786