Addressing the AI Allegations Against AhmetKaan (Sorry for the 3rd Blog)

Revision en4, by erkam, 2026-03-13 00:20:17

Hello Codeforces!

As you may have noticed, there are popular blogs about Ahmet Kaan and his ban from Codeforces after recent contests (top 2 blogs at the moment). One of them is a sentimental appeal, and one is an admin response to that appeal, however, any well prepared defense for him weren't given against this issue while admins decided about this issue, so we think that we should give the actual defense, prepared with effort and his own inputs. I initially thought of speaking with admins only, but since this blog received a lot of attention, I think we need to give chance to audience who are convinced that he is a cheater to also speak.

Before starting, I want to clarify that this blog is solely for arguments. We appreciate the Turkish community's effort for this, but that doesn't help in this case. If you want to show your support, please don't comment anything like "I support him", only upvoting the blog will be fine — and you also don't have to do that. Only comment if you think you have counter-arguments against this defense. And also, please don't try to answer any counter-argument on your own. I will act as his lawyer and will give answers to each of the counter-arguments we get after discussing with him, to avoid tangled discussions.

Actually, when I said there wasn't any solid defense when the admins announced their final decision, I meant it practically. Because I already posted a comment with full defense to arguments given until that point in my comment, but I am pretty sure it went unnoticed. Because comment of that scale should have at least been addressed when having a decision blog if it was seen, I trust admins to not directly ignore a defense prepared with effort. I absolutely don't blame admins for the miss at all, since I basically threw a stone to the sea of trolls and sentimental comments, so I really couldn't expect them to take one of them seriously. With these being said, here is the contents of my comment there:

---------------------------------------------Comment Start---------------------------------------------

Since people here argue that vouching has no meaning (even though I think many credible people vouching for a single individual should increase their credibility, but maybe that comes from a cultural difference), I prepared a full refutal, and I will try to answer any more questions if you have.

First of all, I will refer to submissions as time-x (example: 1952-D in UTC+3). And I will mostly argue about the changes in the problem D, since main arguments come from there. About the speed of E1 and E2, I think the explanation of switching problems applies here. If he was switching between problems consistently and without speed loss, D, E1, E2 are written in the span of an hour, which makes sense. There are other examples of him switching aggressively between problems, like Hello 2026 (and probably more, I haven’t looked that deep). I know that this example looks faster, but please keep in mind that his codes for E1 and E2 are really short, anyone who finds the solution can write them in a reasonably short time.

My main argument about D is that having 2 different editors open during the contest creates many anomalies within the code, and those anomalies are what is seen here. It is easier to argue that they are caused by the editor switch and harder to argue that they are caused by AI.

1.Variable Naming:

There are 3 different naming changes of variables if I noticed all.

  • cocuk(1920-D) -> cocuk_sayisi(1935-D): this change is change from vector to vector count integer, cocuk means child, cocuk_sayisi means child_count
  • at-kat(1935-D) -> m1-m2(1942D): this is caused by at-kat being terrible names for minimum and second minimum. I don’t know what he had in mind, but at means throw, kat means add. Confusing him as well during debugging is highly possible. changing them to m1 and m2 really is what anyone would do.
  • m1-m2(1942-D) -> min1-min2(1952-D): This change probably doesn’t exist. As in his defense, he was stress testing from vs code, and as we can see, many of the changes in 1942-D and 1935-D are not present in this code, since this code probably was his code in geany. I believe he has written those codes concurrently, so this change is actually one place writing at-kat->m1-m2, one place writing at-kat->min1-min2.

2.Formatting:

  • 1920-D -> 1935-D: We see partial formatting change here. That partial is emphasized, because which AI does partial formatting? if(cin>>t){ is added here, with 0 space, spaces added after commas and semicolons, but cin>>x>>y; still has 0 space, at the middle of the code. no parenthesis spaces, like while(t–){ and for(..){ has no space before or after. AI should have been prompted specifically to ONLY add spaces after commas and semicolons, or he fixed parenthesis spaces and cin>> spaces after getting the code from AI.
  • 1935-D -> 1942-D: We see more of partial formatting here. This time, spacing only added to parenthesis, not only that, but only for the first 8 lines of main. Other function’s parentheses remain. So only that proportion is copied from AI or made with AI? But that part has like 0 logic in it. What is the purpose of getting that part from AI? Any longer and AI should reach to cin>>x>>y; line, which still has the same old formatting.
  • 1952-D: Which has the same old geany formatting with only two spaces I can see are at int min1,min2 and dfs(m, 0). Which is completely normal in his coding style, because even though he generally doesn’t have any spaces, some examples show that he sometimes does not care that much about spacing.
0 care for spaces example
  • Overall Argument: This formatting change is best explained with high school muscle memory and university muscle memory. You know, when you are a competitive programmer from the beginning from the high school, you have your own coding style without format. But when in university, they deduce points because of format. I have that and I suspect AhmetKaan may have that too, vs code is connected to my university muscle memory, and sublime text(his geany) is connected to my high school muscle memory. When I write from sublime text I tend to have no space, while in vs code I always write with completely ok spacing. Since I mostly quitted competitive programming, you can examine my codes, and see how spacing is an absolute nightmare in my recent codes. This is surely more apparent when you see 5 different codes in 2 different editors from him.

3.if(cin>>t):

  • Just look at the specific submission where this expression is added. Between 1920-D and 1935-D. This is the submission with partial formatting for colon and semicolon. Assume this line is added by AI, in which way? Because I already talked about how a copy paste of the near lines is highly unlikely. Because the surrounding code has completely untouched parts, an AI copy-paste would be restricted to a tiny ~10-line window. This means he couldn't have just 'slipped up' and blindly pasted a massive block of AI code. He had to consciously add that specific line. While an AI might have suggested the logic, the origin of the idea cannot be definitively proven as AI rather than human debugging.
  • No formatting for if(cin>>t){. it is completely written without space, just like how he writes his own code. yes, inline copilot may result in something like that, but it is also unlikely, first, copilot most likely would put a space like “if(cin>>t) {“ even without interfering with the existing cin>>t, but furthermore, having copilot auto complete on would cause many other changes throughout the codebase if frequently used, when you look how much of the code he should rewrite in vscode. His own cerr error logs (which has 0 possibility of being written by AI) are still there, which actually reduces the possibility of open copilot, since making debug logs written by AI is really convenient. I have no way of completely ruling out open inline auto-complete, since they always have the option to not apply it everywhere, but it is actually impossible to prove for any code. Anomalies not fitting AI behavior and existence of unnecessary manual prints reduces its possibility.
  • if(cin>>t) is a signature for AI’s for a reason. When I feel like there might be an issue with file reading, I also first think of putting it. That is really something that anyone can do in the environment of stress testing where your inputs can absolutely be messy. Comments requested the exact pipeline for this to be necessary, but probably, it wasn’t necessary at all. Just to be sure everything will work fine. Since I already strongly ruled out blind copy pasting, we already know this was intentional. I am pretty sure AhmetKaan is familiar with codeforces rules, and getting a line like that from AI is an instant cheat flag, he wouldn’t do that if he was actually using AI.

4.Why there are no other examples:

  • You know, switching to vs code and submitting a code from vs code is not common at all, even for himself. And probably he won't switch in this hurry. This guy was really a veteran, and I think this was one of the most stressful contests of his life, since being a GM was his long long dream. You are arguing there are too many independent red flags occurring at the same time, but the problem is, these are not independent red flags. Almost all of them are explained with the extremely rare event of concurrently using 2 different editors during the contest, that's why the low reproducibility.

Lastly, not part of my argument, but in the defense of our community, we are acting sentimental, because someone we value has his dream taken from him in a dishonoring way. Sorry for the inconvenience we cause, but we are also humans and we do not act absolutely logical in extreme events.

(added Vladosiya tag here, since this thread is a complete mess right now, and it has a high chance to slip)

----------------------------------------------Comment End----------------------------------------------

One quick note before starting to refute new arguments, my example for "0 cares for space" submission is also subject to some suspicion now, therefore please disregard it. Since I can not crawl, or even try to manually check many submissions, I wasn't able to find another example, but this case only occured under extreme pressure, and his default behavior to those spaces was deleting them in each revision. (many many of the submissions compared showing him deleting some of the spaces). This space additions are caused by muscle memories of a university student, but muscle memories of a competitive programmer are different from it. These two contrasting sides is the actual issue of all formatting anomalities.

Answers of New Arguments by Vladosiya

Round 1085

  • Points 1, 2, and 5 have already been discussed in my comment.
  • Point 3: The min_inf does not disappear and appear, it appears only in the stress test part, as I discussed in the comment, 1935-D and 1942-D are stress test codes, 1952-D is normal code, written concurrently. Between 1920-D and 1935-D, he was just in "random bullshit go" mode, which is really easy to get into when you are stress testing, since you know if you fix your mistake, you immediately learn from the output (if(cin>>t) is also a result of that). it also happens to me, I just do every single thing that comes to my mind, since it is faster than thinking.
  • Point 4: I think point here just ignores the "when" part of those situations. Starting to stress test happens after he thinks and finds a solution to E(note that we are claiming he found solution to E2 while thinking about E1, so he had his solution ready.), which occurs after 1908-D (wa from D caused him to switch problems). After finding the solution to

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en14 English erkam 2026-03-19 15:27:25 0 (published)
en13 English erkam 2026-03-16 19:11:38 19 Tiny change: 'ogs about Ahmet Kaan and his b' -> 'ogs about [user:AhmetKaan] and his b'
en12 English erkam 2026-03-16 19:09:52 6874
en11 English erkam 2026-03-16 17:51:06 3596
en10 English erkam 2026-03-13 15:01:47 522
en9 English erkam 2026-03-13 13:19:41 809 Tiny change: 'eca.png)\nSo optio' -> 'eca.png)\n\nSo optio'
en8 English erkam 2026-03-13 13:04:14 460
en7 English erkam 2026-03-13 12:55:18 337 Tiny change: 'I usage:\n- The fo' -> 'I usage:\n\n- The fo'
en6 English erkam 2026-03-13 12:45:46 21469
en5 English erkam 2026-03-13 01:33:48 5891
en4 English erkam 2026-03-13 00:20:17 10260
en3 English erkam 2026-03-12 23:40:24 335 Tiny change: 'l be fine &mdash and you a' -> 'l be fine - and you a'
en2 English erkam 2026-03-12 23:32:43 1410
en1 English erkam 2026-03-12 23:18:31 132 Initial revision (saved to drafts)