1. Что именно за проблема
Во время раундов появилась конкретная схема: участник получает у LLM готовый код и просто отправляет его, почти не понимая. Это не всегда ловится плагиатом: человек может изменить переменные, поменять местами некоторые части кода.
2. Идея
Xeppelin — open-source tool, изначально сделанный для ICPC, который:
- запускается локально перед контестом
- логирует изменения файлов в рабочей директории
- сохраняет таймлайн разработки (когда и как менялся код)
- не записывает экран, клавиатуру, сеть или вкладки
- после контеста строит визуализацию активности
Это не мой tool, но вы можете найти его тут
3. Что именно предлагается для Codeforces (реализация, не идея)
Предложение — использовать Xeppelin как внешний источник поведенческих данных, без вмешательства в CF-инфраструктуру. Поток работы:
Участник запускает Xeppelin перед раундом
Решает задачи как обычно (локально, в IDE)
После раунда Xeppelin выдаёт:
- лог изменений файлов
- таймлайн активности
Этот лог можно автоматически связать с CF-сабмитами (по contestId + handle)
CF при этом:
- не меняет процесс сабмита
- не получает данные в реальном времени
- не требует изменений в CF и может быть полностью опциональным: участник сам решает, прикладывать ли activity log.
4. Какие именно данные получаются
Из Xeppelin доступны чёткие и простые метрики:
- количество изменений файла до AC
- размеры отдельных изменений
- время активной работы vs простои
- был ли код написан постепенно или “одним куском”
- повторяется ли одинаковый паттерн по нескольким задачам
Это метаданные процесса, не содержимое экрана и не ввод пользователя.
5. Почему это хорошо ловит именно читеров:
Типичный паттерн копипаста или списывания LLM-решения:
- долгий простой
- один большой апдейт файла
- почти отсутствие правок
- сразу AC
Этот паттерн:
- редко встречается у людей, которые реально пишут код
- хорошо виден именно в файловом таймлайне
- плохо подделывается без реального переписывания решения
6. Как это можно использовать на практике (без банов)
Xeppelin не доказательство, а сигнал. Реалистичные применения:
- дополнительный input для пост-контест анализа
- основание для provisional rating в явно аномальных случаях
- инструмент для модераторов/авторов, а не авто-наказание
7. Почему это безопасно для CF
- нет прокторинга
- нет вмешательства в сабмиты
- нет обязательных установок
- нет real-time нагрузки
Xeppelin работает полностью снаружи, CF получает данные после контеста или вообще только по запросу.
8. Ограничение и компромиссное решение
Недостаток
Очевидный минус такого подхода — невозможно и не нужно покрывать 100% участников. Часть людей не сможет или не захочет использовать внешний логгер (устройства, политика установки, личные причины).
Попытка сделать такой софт обязательным для всех rated-раундов действительно слишком жёсткая и может навредить доступности Codeforces.
Компромиссное решение (без изменения базовой системы CF)
Вместо этого предлагается следующий вариант:
- Рейтинг остаётся один и тот же, как сейчас
- У каждого результата появляется статус:
Verified — если участник приложил activity log (Xeppelin)
- Unverified — обычное участие, без логов
Это не отдельный рейтинг и не “вторая лига”
- Это дополнительный слой доверия, похожий по духу на unofficial standings или verified badges
Практически это даёт:
- возможность фильтровать лидерборд по Verified
- приоритет доверия к verified-результатам
- меньше provisional-проверок для verified участников
При этом:
- никто не теряет доступ к рейтингу
- формат раундов не ломается
- честным участникам появляется понятный стимул подтверждать процесс
9. TL;DR
Есть уже существующий инструмент (Xeppelin), который логирует процесс разработки без слежки. Его можно напрямую связать с CF-раундами и использовать как дополнительный сигнал против копипаста LLM-решений — без банов и без ломания платформы.









Auto comment: topic has been translated by soullless (original revision, translated revision, compare)
Я вижу, что этот пост был написан LLM, но не могу это доказать
Завтра жаута, а я должен был по быстрому написать пост и пойти спать/
Calling Xeppelin "made for ICPC" is misleading. It was made for ICPC, but as a tool for analyzing performance in virtual contests by a single team. It was not made for invigilation purposes and it's not affiliated with the ICPC.
As said here, Xeppelin requires a very specific work flow. I do not think it is suitable for codeforces.
I mean we could use some tools like xeppelin to recover the actions and behavior
You can just ask AI to edit the logs to make them seem legit
More like, it's extremely easy to rig the logs. Just yap gibberish on the .cpp file until GPT gives you the answer.
You can read exactly what part of the code a person is changing, what they're rewriting, and how they're debugging. Of course, you can't tell if a person cheated in just one round, but if suspicious activity accumulates over several rounds, it will become obvious that they did.
Write the logs in encrypted form. (Similar to RSA). They won't be able to modify it meaningfully unless they have quantum computers. I also suggest that the logs should be written no in a straightforwardly structured manner, but in an informal manner. Because structured writing can make it easier to reverse engineer it
Edit the logs before they're encrypted. Possibly even override all inputs of the tool. Reverse engineering ftw.
Non-straightforwardly structured also means harder to parse afterwards — proportionally so.
implementing some system such that logs are always properly timestamped (i.e. cannot be created with an arbitrary timestamp) should solve this (needs another machine/server with a trusted clock). then, at some point of time, assuming you do not have the solution yet (your llm is still thinking), a sufficiently advanced system will be able to recognize that your inputs aren't meaningfully leading you to the solution, even if you reverse engineer the tool and gain some way to create whatever inputs of your choosing.
A sufficiently advanced system will need so much effort to develop you're better off racing Musk to Mars.
humans are a sufficiently advanced system :)
for example, if we made the logs public or public to people with a rating > x (definitely compromises some privacy though), then motivated contestants would have a much easier time spotting cheaters.
Humans are also not on the catching cheaters side any more than the cheating side. The current situation is proof of that. Your idea is like saying that a sum of n bits is close to n or that in a tug of war, the rope will quickly accelerate because there's a lot of people pulling.
I think all of the blogs about cheaters are enough proof that there is at least some motivation for catching cheaters. The purpose of this tool was never to outright find all cheaters, but instead to provide a way to easily check if a given contestant is definitely cheating, which I think is relatively practical to implement compared to the large majority of cf anticheat proposals.
Again it's not if there's at least some motivation but if there's significantly more motivation. I say if there was, all cheaters would be caught near-instantly, it wouldn't be just the occasional blog.
You've had a ton of reasons why it's not practical pointed out. Go do an experiment with catching cheaters your way and report the results if you believe it'll work.
Actually, for non-cheaters, copying a template during a contest should be considered normal behavior.
This problem can be easily solved
Isn't developing a desktop application for Codeforces contests a valid option? Enforcing restrictions would be easier.
The desktop application could come with an integrated IDE for coding. If you want to use a template or something similar, the application could remember your own notebook (or those from other users who made them public) and give you access to your templates inside the IDE. Leaving your local environment would be the trade-off, but over time the IDE could support more features for customization.
The idea is something like a Lockdown Browser, but for Codeforces.
It is recommended to refer to LeetCode's online IDE, which allows for real-time monitoring of code status and facilitates inspection by setting breakpoints at points of submission and large-scale modifications
It's pretty good, but maybe it's limited to browser, there are many ways to use local setups to use AI, CLI or smth.
TopCoder did it a while back and their arena is very crap to use.
Also, what if, say, I compete on a mips64-openbsd-musl? Do you have a binary for me?
Idk, in TopCoder case it's hard to say why the arena is what it is, maybe the tech stack available at the time.
I get the point, maybe the only fair option is creating a linux distribution or smth but it gets too forced and even with that, you will be able to use AI.
Maybe the only way is to come up with an optimal way to verify proctoring if you want to get rating change.
yeah, like I compete on aarch64, except on Asahi Linux, except using UV python. Xeppelin wouldn't work whatsoever for me necessarily, especially because Neovim rewrites the whole file by default (:w functionality vs whatever x is or whatever that no one really uses)
Wow
Sounds like far too much data to analyze, there's 30k contestants in most contests nowadays.
I found it might not consider some who writes codes on local editor.
I suggest to do something like this tool, but relying on catching cheaters
it wont catch users who ask AI to get the idea, then implement from scratch on their own
There is no solution for THIS problem, but my idea destroys cheaters who don't even understand solutions
What if they just look at the code and retype it, maybe moving functions / code blocks around?
Sure that would be different from someone solving / implementing legitimately, but telling the difference is difficult if not impossible, especially considering that behaviour would differ from person to person.
In fact, if someone does do it that way, then they will probably also test their retyped "solution" just to know that it's correct, so you can't even rely on them not testing or something like that.
It seems to me that inhuman actions like too little debugging or too few rewrites can accumulate over time, and this will ultimately give such a person too much of a suspicion penalty.
What if a grandmaster writes the contest? What if he comes up with a solution and implements it without errors, but is considered a cheater?
I think that if your idea is approved and they start monitoring this method of cheating, people who were cheating will simply start rewriting the code manually, changing more variables, replacing BFS with DFS and vice versa (not always, of course, but where possible), as well as with other algorithms, test, write their own stress tests, and test. Are you sure you can completely defeat cheating? P.S.: There was a case when a person took first place in a contest, and it was LGM, and he turned out to be a cheater. How do you suggest fighting fairly intelligent cheaters who know a little or maybe a lot about sports programming?
To be honest, I think it will decrease the number of cases when person doesn't even know what is going on in his code, and also cheating will become more uncomfortable
I agree with that, but haven't you considered that those who want to continue stealing will find other ways to do so? For example, they could hire a special person (a booster) or find some other way?
Other ways of cheating weren't such an annoying, and people usually didn't pay attention to this because the small amount of such a cheaters.
That's how it was. And the problem is that it will be. That's why looking at ratings isn't always cool. But for some reason, when I write a comment with a low rating, they just delete my post. Super platform. By the way, it is still impossible to delete an account on this platform. Why is that? Let's all just leave and let the cheaters compete among themselves to see who can better use artificial intelligence in the allotted time. That's it. This will solve all issues related to cheating.
Let's take online chess, for example. One cheater's account was banned, so he created a second one and went back to playing and satisfying his needs. There have also been cases of cheating offline. We can also recall that not so long ago, two participants (from the Chinese team) were found with phones at the IOI. Does anyone like the fact that a cheater at the IOI, for example, may simply not receive a medal because the cheater is smart enough to find a very cunning way to hide their fraudulent activities? It's annoying that there are more cheaters now — yes. But they have always been around, and now it has reached a very large scale. By the way, now it's really possible to level up your skills so much in a year that I think ANYONE can get into the top in any online competition. Someone wrote earlier that they had reached the master level, but if they start constantly writing contests now, their rating will drop by about 500 points (this is not my opinion, because I have never been a master on this platform). Are you still sure that you can combat cheating in this way? P.S.: You probably just wanted to get a lot of likes to try your luck at blogging and possibly earn some money?)
Dude, I don't have any advandage because of my contribution, I just suggested way to solve the huge problem, why are you trying to find negative sides?
I'm not looking for negative aspects. What I wrote, I thought, was obvious to you, that it won't solve the problem, but will only force cheaters to do their dirty deeds in a different way. Or was that not obvious to you?)
I didn't say that it will solve the problem with all cheaters, I mentioned that it will illuminate cheaters who don't even understand the problems and solutions, who just use chatgpt and 0% brain, idk how did you read my post
To be honest, I didn't read your post in its entirety, just skimmed through it. But what's the point of fighting cheaters who don't understand what they're doing? Well, they'll start learning basic algorithms and using more intelligence. And? Will you completely eradicate cheating? What's the point of your post? Let's say your ideas start to catch on, and cheaters start using more complex algorithms in contests. What then?
I do not think there is any possible solution to this way of cheating
There is basically no way to catch this if you can't monitor them physically, just like if you ask your roommate or somebody for help.
Прототип кто-нибудь выкатит?
My thought that its not solve of problem, but anyway its better than plagiat system, on other side most of people just want to solve contest without headache with this stuff.
For real, but I think this idea cuts off cheaters who don't even understand the ideas
i like how almost every blogpost talking about AI-cheating is written by chatgpt :)
i am not saying it's bad, i just find it funny to imagine that codeforces is just two armies of machines fighting each other.
I think writing posts using chatgpt is pretty nice, because you use less time and provide your idea so that the person will understand easily.
Also, what do you think about that idea?
https://paulgraham.com/writes.html
There is nothing we can do
Perhaps for some authors, English is not their native language, so using AI-assisted response can be better than posting directly in broken English (as with some of my blogs and this comment).
I still have reservations about replies that feel overly "machine-like" from ChatGPT, as they make me feel like I'm communicating with LLMs rather than with people.
It seems that the only way I can distinguish LLM-generated text is by the presence of too many meaningless bullet points. People with stronger English skills, or native speakers, are probably much more likely to notice the traces of AI polishing.
What about someone using two computer — one for getting the AI ready code and other for doing the contest?
person who cheat this way wont"t almost make any errors, will write their code fast, and won't debug for a long time
Sucks for people who don't suck...
Кажется иронично, что пост о проблеме использования ЛЛМок для читинга очевидно скопипасчен из ЛЛМ :)
Иронично что в 2026 году некоторые люди до сих пор не принимают LLM как tool для повседневной жизни
This is a really cool idea. I think there is a a way we might be able to extend it's functionality.
Since it stores the development lifeline, we could train AI models that detects whether someone is cheating or not depending on the file modification history. People write code differently when they write a solution they understand and a solution they don't, and even a solution they understand but did not develop on their own.
If it's successful, we might be able to detect with high accuracy whether a person wrote a solution by himself or not.
That's a very cool idea. We can also extend it's application.
Since it stores the development timeline, we can train the AI models to detect cheating based on the code logs. Because we code differently when we understand a solution and when we don't understand it, or even when we understand the solution but didn't come up with it ourselves.
If this is successful, we could even detect potential cheaters with high accuracy.
Even though we don't might never be able to stop cheating entirely, we can drastically reduce it just by making it more difficult
That's actually a very cool idea. We can even extend this process further.
We can train AI models to detect cheating based on the development timeline. People write code differently when they understand the solution and when the don't, or even when they understand the solution, but didn't came up with it themselves.
If successful, this could detect cheating with high accuracy. We could drastically reduce cheating, by simple making the process more difficult
People like Dominater069 that use online IDEs (in his case codechef IDE) wouldn't like this.
I guess we can add this for IDE-online also.
How about demanding every participant to open his camera and use AI to detect whether they use LLM?
This is far too intrusive.
Similar to suggestions like "build an online IDE within Codeforces", this is something that could be perhaps considered for things like job interviews or online university exams. Maybe some important online contests. Something big and important.
A Codeforces round is not a Big Important Event. I wouldn't participate under conditions like that, and I don't think many would.
Oh~ I was only joking. Awa.
what i think so far is One practical way to reduce cheating is ethical behavior from LLMs. Since LLMs can detect live Codeforces contests, they could refuse to provide problem-specific solutions during ongoing contests and instead ask users to solve independently. This would not stop all cheating, but it would reduce easy misuse.
This is not something you will be able to get LLM providers to do.
This clearly helps, but it certainly won't the problem, because the solution is:
Simply type the code from LLM manually, without copy-pasting.
It will be obvious that person cheated if he didn't almost debug, didn't change the code and wrote the code fast.
I am sure most of us do it in every A, B problem. And I am certain more skilled people probably don't even debug C and D.
https://codeforces.me/blog/entry/150074
As a developer of Xeppelin contest watcher, glad to see the tool mentioned — even though the context is unexpected. Several thoughts on the topic:
cheaters gonna cheat anyway but nice thought