Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 4 месяца назад, По-английски

Hello Codeforces,

As 2025 comes to an end, it is time to start summing up the results.

This post is about the Global Rounds. Since September, we have held a series of three Global Rounds, numbered from 29 to 31.

This is the perfect moment to once again express our gratitude to XTX Markets for their initiative in organizing these rounds and their constant support over the years. Such stability in supporting the competitive programming movement is truly admirable and highly appreciated by the community. I wish XTX Markets a fantastic 2026, full of success and victories!

In each of the three rounds, 50 t-shirts were awarded (to the top 30 participants and 20 random participants ranked between 31st and 500th). This year, we had to change the manufacturing and shipping process, so it is still a work in progress, but things are moving forward, and shipping will begin soon. I would like to take this opportunity to ask the prize winners to respond promptly to any information requests and to meet the deadlines. It is also a good idea to keep your shipping address up to date at https://mirror.codeforces.com/settings/delivery.

The results for this series were calculated based on the best two performances out of the three possible rounds. Participants received points depending on their rank (points were awarded to the top 100 participants according to this table). The top 20 participants will receive commemorative hoodies and certificates indicating their rank.

Congratulations to the series winner ecnerwala on a decisive victory! Full results can be found at https://mirror.codeforces.com/contests/2147,2164,2180/gp100/best2/standings.

Thank you for participating in the rounds. Would you like another season of Global Rounds in 2026?

Mike


P.S. Here are the top 20 participants. Congratulations on winning a hoodie and a certificate!

# Participant Total GR29 GR30 GR31
1 ecnerwala 2000 1000 (1) 1000 (1)
2 Kevin114514 1412 307 (10) 706 (2) 706 (2)
3 ksun48 1072 575 (3) 497 (4) 291 (11)
4 Otomachi_Una 1010 10 (94) 1000 (1)
5 jiangly 872 706 (2) 166 (27)
6 dXqwq 866 291 (11) 575 (3)
7 kotatsugame 829 254 (14) 125 (38) 575 (3)
8 hos.lyric 789 325 (9) 346 (8) 443 (5)
8 VivaciousAubergine 789 149 (31) 443 (5) 346 (8)
10 maroonrk 774 277 (12) 497 (4)
11 strapple 742 371 (7) 371 (7) 277 (12)
12 qiuzx 710 403 (6) 307 (10)
13 tourist 694 291 (11) 403 (6)
14 JDScript0117 606 99 (47) 235 (16) 371 (7)
15 Nachia 600 346 (8) 254 (14) 138 (34)
16 Radewoosh 579 325 (9) 254 (14)
17 StarSilk 511 307 (10) 204 (20)
18 Benq 497 497 (4)
19 turmax 495 403 (6) 52 (69) 92 (50)
20 crazy_sea 463 138 (34) 325 (9)

Полный текст и комментарии »

  • Проголосовать: нравится
  • +276
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 4 месяца назад, По-английски

Goodbye, 2025. Hello, 2026!

Dear Santa, Please make 2026 a happy year—not just for me, but for everyone. We all need this.

Hello, 2026!

And of course, we have our traditional gifts!

Change Handle Feature

Hurry! Until January 10, you can change your handle (but only once)! Note that next time you will be able to roll back the change or request another handle change only after a year (in December 2026). Choose wisely!

You can change your handle to a new one that hasn't been used by anyone else, or to one that you've previously used. Links to your old profile will automatically redirect to your updated profile.

Again this year, if you've participated in at least 10 rounds, you can request the handle of an inactive participant. This means the participant must have had a period of activity on Codeforces lasting at most 180 days, and this activity must have occurred in 2022 or earlier. The inactive participant must not have posted comments, messages, or similar content, and they must not have participated receiving 'Accepted' in more than 2 contests. In such cases, the handle will be automatically renamed, and the original owner will be notified via email. If the original user requests their handle back, we will roll back the change and restore your previous handle.

If you're unable to change your handle, it means some of the requirements have not been met. Please do not ask me to intervene manually. I especially dislike requests such as, "This is my second account; I took an interesting handle myself." I'm not Santa Claus!

Speaking of handles, I always reminisce about one particular story. Once, a user sent me this message: "Please change my handle from I_love_Valya to I_love_Sveta, as I no longer love Valya..."

New Year's Masquerade of Colors and Ranks

The traditional magical tab has appeared in your profile settings. Happy New Year!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1507
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 7 месяцев назад, По-английски

Hi, Codeforces!

Remember this post https://mirror.codeforces.com/blog/entry/105779 about highlighting test cases in example inputs?

Well, with a quick push, Vladosiya and I have now added support for highlighting cases in the outputs as well. On hover (or tap on mobile), the corresponding input and output cases even get highlighted together. Look at this beauty:



There's still a bit of polishing needed for situations when authors add custom outputs or in some other unusual scenarios, but the basic functionality is already there and ready to use.

Enjoy the upcoming rounds!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +2095
  • Проголосовать: не нравится

Автор MikeMirzayanov, 7 месяцев назад, По-английски

Hi Codeforces,

Have you already spotted it in the schedule? Yes, the next Global Round is coming up on Sep/20/2025 17:35 (Moscow time)!

I'm excited to announce a series of three Global Rounds that we'll be holding in 2025. As always, these rounds are kindly supported by XTX Markets. Huge algorithmic thanks to them!

Each Global Round will be a common round for both divisions, featuring 7–9 problems. The contest length will be 2–3 hours, depending on the number and complexity of the problems. All rounds are rated for everyone. At each round, 50 branded T-shirts will be awarded, and of course, all problem authors will receive T-shirts too.

Prizes for this round:

  • Top 30 participants will get a T-shirt.
  • Another 20 T-shirts will be randomly given out among participants ranked from 31 to 500 (inclusive).

Prizes for the 3-round series in 2025:

  • In each round, the top 100 participants will earn points according to the scoring table.
  • A participant's final score will be the sum of points from their two best rounds.
  • The top 20 overall will receive sweatshirts and certificates.

Wishing you a fun and memorable experience in the Global Rounds!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +349
  • Проголосовать: не нравится

Автор MikeMirzayanov, 8 месяцев назад, По-английски

The image was created with the help of OpenAI, a sponsor of the ICPC World Finals 2025.

Hello, Codeforces.

Today I arrived in Baku for the ICPC World Finals. The very first participant I met asked me if we would be doing push-ups.

Yes! This year I decided to repeat the fun event and I invite you to join the push-up challenge. It will take place on September 3rd at 18:00. The best performer will receive a prize from Codeforces! And everyone in the top 25 will get a souvenir.

If you're not ready to do push-ups, come anyway to cheer for your friends and have fun!

We'll repeat last year's format: push-ups in rounds of 25. Gradually, people will start dropping out. Whoever does the most total push-ups will be the winner! In other words, they'll hold the title of Push-up World Champion according to the ICPC World Finals version :-)

There will definitely be a livestream on my Instagram https://www.instagram.com/mikemirzayanov/. Join us online to cheer!

See you there!

Live Stream →
On September 3rd at 18:00

UPD 1: The complete alumni schedule can be found at https://worldfinals.icpc.global/alumni.html.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +615
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 11 месяцев назад, По-английски

Hello, Codeforces!

I have a short update. With the help of Kleidemos, we've improved C# support. You can now use the modern dotnet-9, and the C# language version has been upgraded to 13. Additionally, the F# language (version 9) is now supported as well. Both compilers are currently in experimental mode. Once we make sure everything works smoothly, I'll remove one of the older C# versions and leave only two.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +192
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 12 месяцев назад, По-английски

This is a response to this post.

Originally, I intended to leave it as a comment, but the text turned out to be quite long. So I decided to publish it as a separate post.

Hi!

Let me start with the main idea: I don't think I ignore too many issues (though I do ignore some). In most cases, I do work on them, but these days I just don't feel like writing about it. That kind of communication takes a lot of energy — which I currently don't have.

Oh, it looks like you edited the beginning of the blog, and now it triggers less of an internal protest in me. Honestly, lately I've been in a difficult emotional state, and I just don't have the energy or desire to interact much. It's not just about Codeforces — it's generally harder for me to engage than it used to be. I won't go into details (health, relocation, family issues, changes in the nature of my work due to bots) — all of that affects my mental state and willingness to communicate.

I understand now why companies often have a spokesperson or a similar role. Responding properly often requires deep focus, careful wording, emotional energy, and switching context away from other tasks. At the current scale of the audience, reacting to everything directly is very resource-intensive. Some of the blog posts you mentioned I had completely missed and never saw.

Thank you for this post. Of course, this kind of silence on my part isn't right. Maybe I'll try to overcome myself and be more responsive in some cases. I understand how frustrating these issues can feel from the user side, especially when there's no visible explanation right away.

I've written it before, and nothing has changed: almost every day and night I'm doing a huge amount of work around the infrastructure. Unfortunately, I'm not very good at delegating (though I manage to do some of it, and I keep trying). The Codeforces infrastructure is quite extensive now, and things are constantly happening: equipment fails or needs upgrades, there are attacks, load patterns change and the code or settings need to be adapted, we do new things (like the recent blitz round, which didn't run itself), rounds require attention and time, internet disruptions or blocks lead to infrastructure changes, investigations and fixes are needed for reports of unusual behavior or bugs, and then there's work with sponsors, clients, and special projects. I'm working on strengthening the team, but it's hard — many of my plans were derailed in 2022. Also, I don't really take vacations — I'm always on call and handling issues. It's been like that for more than 15 years. That's why I sometimes get into a state where I try to conserve energy and avoid doing that drain it. For example, I've started writing less on the site.

Now, some context. Over the past year (or even longer), I've had to put in significantly more effort just to keep the site running and to avoid total data scraping by AI bots. They ignore both robots.txt and site-specific HTTP headers. It seems that more than half of the website downtime incidents are caused by the unnatural and irregular load they generate. Something happens every single day. For example, yesterday I had to ban several thousand bots that registered for a round. That took several hours. There have been many similar incidents before (you usually don't notice them because I react quickly), and their absence during rounds is thanks to the much-hated Cloudflare human verification checks. These bots aren't simple scripts — they're part of large-scale, organized operations. Some even mimic human behavior well enough to get past CAPTCHAs.

I recently saw this article from Wikipedia, and I can assure you that something very similar is happening on Codeforces at a noticeable scale.

I wish I could live in a world where I didn't have to wrap everything in protections and CAPTCHAs, but the world doesn't work that way.

I've often heard suggestions like “let's add SMS verification” or even more extreme ideas like video verification. I'm not optimistic about those. I like the idea of basic privacy, and SMS verification significantly breaks that. Also, international SMS delivery isn't reliable. And even that wouldn't solve the problem — there are large pools of phone numbers available for rent that attackers can use. Practice shows that bot authors work hard, invest effort, and spend considerable resources. It's common for attacks to involve thousands of IP addresses and registered accounts — and we have to deal with that somehow.

Seems I've started rambling a bit, so let me briefly respond to the specific points from your post.

1. Unreasonable delay for viewing submissions

It's true — I didn't respond directly to some of these concerns. I do not allow bots to scrape the site to train their models on user submissions. Fighting bots is hard, and we have to rely on heuristics that evolve over time. But I've been working hard to make these problems less visible to regular users. For example, even the title “Unreasonable delay for viewing submissions” no longer applies. It came from this post, which no longer reflects the current reality. Why? Because I changed the behavior months ago, partly in response to that complaint. I continue testing new approaches and adjusting implementations.

2. Cloudflare misconfiguration

I'm confident that things have greatly improved since this post. Unfortunately, we can't hold rounds without Cloudflare or a similar service. It protects us from bots and from DDoS attacks — some of which have lasted for weeks and were quite powerful, though you likely didn't even notice. Thanks to Cloudflare.

On the other hand, yes, it does sometimes get in the way. But if you remember how things used to be, you'll see we've made huge progress. Nowadays we rarely enable aggressive protections during rounds, which used to be standard practice. I don't see many “I'm tired of Cloudflare during the round” comments anymore. That's because a lot has been reconfigured — and we continue to improve.

By the way, in the context of that discussion, I responded with this post, and the low number of complaints (which I do read and use to adjust settings) suggests that many issues have been resolved.

3. IP ban + blocked by the administrator

Due to changing bot patterns, I had to temporarily restrict some IPs and accounts. But within a day or two I improved the strategy, and such reports mostly disappeared. If you look at this post, almost all messages are from two weeks ago — that incident has already been resolved.

If you expect me to comment in detail on every such case, I'd end up spending the entire day writing replies instead of implementing fixes and improvements.

The second post (link) didn't get much traction either, because I changed the strategy and started showing a message explaining the reason — maybe not always perfectly accurate, but usually right.

There are also those GIFs you shared about authentication. They aren't directly related to this issue. I'm honestly happy that AtCoder can fend off bots with a simple CAPTCHA. But Codeforces faces much stronger attacks. I've had to manually undo actions from bots that got past such CAPTCHAs dozens of times.

4. Recently, your account was used to crawl

This is essentially a continuation of the previous point. Now, whenever possible, I avoid fully restricting IPs or account access — only certain pages are blocked, and I try to show a warning message explaining why. The warnings are usually accurate, and even when they're not, you can generally understand the cause. As I said earlier, I'm constantly adapting detection methods, and I hope these restrictions will become less noticeable over time.

5. Hacking issues

If you had to dig up a 1.5-year-old post to find an example of this, maybe it's not so bad after all.

I don't recall that post clearly. Maybe the author didn't leave a comment under the round announcement or tag me in the post. Also, I vaguely remember banning this person for repeated behavior violations — maybe that's why somehow I skipped it. The round in question sounds like it had major problems — but note that we did pay attention to it, and there haven't been widespread similar issues since.

As for this comment, I flagged the bug to the coordinator and KAN. I think that's the appropriate level of involvement for me in such a situation. Looks like the team investigated and added updates to the announcement. Of course, mistakes in problems are unfortunate, but they happen — and always will (hopefully less and less). In this case, reasonable effort was made to understand the impact, rating was rolled back where needed, and everything was communicated transparently. What's the problem?

6. API issues

You might have noticed that it doesn't work for a long period of time. This is because Mike enabled cloudflare even for apis during contest, which got a workaround in meooow25/carrot#67

Does /api really get blocked by Cloudflare? I'm pretty sure that was fixed a long time ago.

It worked for a while again until he started to take down the user.ratedList api during contest too

Maybe I'm mistaken, but I believe everything is functioning as intended. I tested availability during today's contest, and it all worked fine. Could you point me to where exactly this issue was raised, if it still exists?

MikeMirzayanov did make a comment about this api 3 years ago. However, it seems like there was no further communication.

That's true — I forgot about that. Were there any other reminders I might have missed?

This post ended up much longer than I planned, but I just wanted to share what's been going on behind the scenes and why some things are the way they are. I really do appreciate the feedback and the care many of you show for Codeforces — it matters. I know I'm not always quick to respond or explain things, but I do read what's being said and try to make things better, bit by bit. Thanks for sticking around and being part of all this.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1425
  • Проголосовать: не нравится

Автор MikeMirzayanov, 15 месяцев назад, По-английски

Hi, Codeforces!

Around this time, 15 years ago, I was deploying the first version of Codeforces on a server, registering my account, and writing the first post. 15 years have passed. Well, happy anniversary to us!

For me, this is the most exciting adventure — full of ups and downs, hard work, and moments of joy. What's amazing is that it was never a lonely journey. I've always had caring and reliable friends by my side! That includes the Codeforces team, coordinators and problem writers, our partners in various events, all community members, and, of course, our sponsors — steadfast supporters and helpers.

Look at what we've accomplished together! Here are some of the key metrics over the years. There seems to be plenty to celebrate!

On a day like this, of course, I want to share some good news. And we have some! We have fantastic news!

News #1. Our title sponsor, TON Foundation, has extended and expanded its support of our community. Honestly, I'm amazed by how many innovative projects are working on the TON blockchain. And their long-term and consistent support of the competitive programming community is a great gesture of trust. Thank you, TON!

News #2. In this context, I'd like to announce increased payouts for problem authors and coordinators. We all want to see new and exciting problems and regular rounds. Now, Div 1 + Div 2 round authors will receive 1150 USDT, and Div 2 round authors will receive 450 USDT. I hope this news will inspire the best of the best to organize rounds!

News #3. And that's not all! We're continuing to develop unique competitions in collaboration with TON Foundation. Very soon, you'll be able to participate in the first-ever competition on our platform for programming smart contracts on the TON network! I think this will be a fresh and exciting challenge for the competitive programming community.

News #4. From mid-February to March 9, we'll be hosting an entertaining Codeforces Blitz Cup 2025 with duels and live streams. It will be a small, friendly tournament. Its primary goal is to entertain — we want to try a different format and create a fun show from the community for the community. Sounds interesting?

We want to invite experienced participants from different communities and countries. Participants should be ready for some show elements—mini-interviews, helping with commentary, and participating with screen-sharing and webcams. If you're red (or have been red) and are interested in giving it a try, fill out the participant application form, and we'll consider your application!

That's all for now, I think. And now I'll go enjoy a piece of birthday cake.

Mike

P.S.
I've often been asked about repeating the crowdfunding campaign we last did five years ago. It's a great idea, and I'd love to do it again! Right now, there are some organizational and bureaucratic challenges to launching it properly. Let's see how they get resolved. Maybe we'll kick it off soon—or perhaps we'll wait for the next round binary date at 16 years!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +2311
  • Проголосовать: не нравится

Автор MikeMirzayanov, 16 месяцев назад, По-английски

Hello, Codeforces!

I'm excited to invite you to participate in MaraTON Challenge 1, our first marathon in collaboration with the TON Foundation. It's great to see our partnership with TON thriving and moving forward.

Take part in the challenge →

The challenge is brought to you by TON blockchain engineers, some of whom are community members. Special thanks to SpyCheese for preparing the problem!

The competition will run for three weeks, starting on Dec/23/2024 16:35 (Moscow time). Get ready to dive deep into the technical details of the blockchain world — it's worth it.

Winners will receive amazing prizes:

  • 1st place: 8,000 USDT
  • 2nd place: 5,000 USDT
  • 3rd place: 3,000 USDT
  • 4th–10th places: 2,000 USDT each
  • 11th–20th places: 1,000 USDT each

Additionally, there will be bonus prizes for the leaders throughout the competition. Starting December 25th and continuing daily until January 13th at 13:35 (UTC), we will award bonus prizes to the top five leaders of the day:

  • 1st place: 250 USDT
  • 2nd place: 125 USDT
  • 3rd place: 75 USDT
  • 4th–5th places: 50 USDT each

Please note that these prizes will be distributed after full testing of all submissions made by 13:35 (UTC) on the respective day. The results are published here: https://mirror.codeforces.com/r/maraton-1-leadership-awards

Join the competition — it's truly something new and exciting on Codeforces!

* All payments will be made to a TON wallet. All payouts (including those for daily leadership) will be issued after the final results are announced.
* In case of ties in the leaderboard, the participant who first achieved the score will rank higher for prize distribution.
* Please note that this is an individual competition. Collaboration, discussing ideas, or using shared code is prohibited. Please adhere to the rules regarding the use of third-party code.

UPD: Here is the link to the table with the current progress on rewards for daily leaders: https://mirror.codeforces.com/r/maraton-1-leadership-awards

Полный текст и комментарии »

  • Проголосовать: нравится
  • +144
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 16 месяцев назад, По-русски

Привет, Codeforces!

Осталась всего пара дней до 2025 года. Напоследок в этом году залечу с обновлением — надеюсь, оно окажется полезным.

Теперь в свой мэшап вы можете автоматически подбирать случайные задачи по ряду критериев и ограничений. Задачи берутся из архива, необычные задачи исключаются автоматически.

Итак, нажимайте ссылку "Добавить случайные задачи" под списком задач и переходите к форме добавления.

Здесь можно:

  • исключить задачи, которые сдавали/пытались сдать/создали как авторы зарегистрированные на мэшап участники (чтобы задача была исключена, достаточно одного зарегистрированного участника, который её может знать),
  • если мэшап находится в группе (например, это группа ваших тренировок), то исключить все задачи из других контестов этой группы,
  • исключить задачи с подзадачами — такие задачи часто как-то связаны между собой или ссылаются друг на друга,
  • просто указать список хэндлов или списков пользователей, для которых нужно убрать известные им задачи,
  • и, наконец, самое хитрое: в поле "параметры задач" можно указать в специальном формате требования к добавляемым задачам.

Поле "параметры задач" описывает количество и свойства задач, которые нужно найти. По клику на знак вопроса появится следующий поясняющий текст.

Введите одну или несколько строк. Каждая строка задаёт требования для одной задачи. Строка должна начинаться с латинской буквы p, после чего через пробел можно указать дополнительные параметры:

  • Короткое название задачи (её букву в контесте);
  • Требования к сложности задачи (например, ratings:1000-1200, ratings:2000, ratings:3000- или ratings:-1000 — отсутствие числа слева или справа от знака минус обозначает отсутствие соответствующей границы);
  • Теги (используйте tags: и укажите список тегов через запятую, например, tags:dp, binary search, brute force) — будет выбрана задача, содержащая хотя бы один тег из списка. Названия тегов можно писать и на русском языке.

Примеры строк с требованиями:

  • "p" — произвольная задача, буква в контесте будет назначена автоматически;
  • "p F" — произвольная задача, которой назначается буква F;
  • "p ratings:2000-2400" — задача с уровнем сложности от 2000 до 2400, буква в контесте назначается автоматически;
  • "p D ratings:-1200 tags:жадные алгоритмы,дп" — задача с уровнем сложности не более 1200, имеющая тег жадные алгоритмы или дп (или оба), которой назначается буква D.

При нажатии кнопки "Подобрать задачи" вам будет предложен список задач для добавления. Кнопку можно нажимать повторно для генерации другого списка. В этом списке вы можете отметить понравившиеся задачи и, наконец, добавить их в мэшап.

Обратите внимание, что рядом с кнопкой "Подобрать задачи" после нажатия на неё будет выведена дополнительная статистика, которая может помочь вам сориентироваться по рейтингам доступных задач в условиях заданных ограничений.

Надеюсь, теперь подбирать задачи для внутренних тренировок и соревнований станет проще.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +2609
  • Проголосовать: не нравится

Автор MikeMirzayanov, 16 месяцев назад, По-английски

Goodbye, 2024. Hello, 2025!

Dear Santa Claus,
Please make 2025 a happy year—not just for me, but for everyone. We all need this.

Hello, 2025!

And of course, we have our traditional gifts!

Change Handle Feature

Hurry! Until the 10th of January, you can change your handle (but only once)! Note that you can roll back the changes or request another handle change only after a year. Choose wisely!

You can change your handle to a new one that hasn’t been used by anyone else, or to one that you’ve previously used. Links to your old profile will automatically redirect to your updated profile.

Again this year, if you’ve participated in at least 10 rounds, you can request the handle of an inactive participant. This means the participant must have had a period of activity on Codeforces lasting at most 180 days, and this activity must have occurred in 2020 or earlier. The inactive participant must not have posted comments, messages, or similar content, and they must not have participated in more than 2 contests. In such cases, the handle will be automatically renamed, and the original owner will be notified via email. If the original user requests their handle back, we will roll back the change and restore your previous handle.

If you’re unable to change your handle, it means some of the requirements have not been met. Please do not ask me to intervene manually. I especially dislike requests such as, "This is my second account; I took an interesting handle myself." I'm not Santa Claus!

Speaking of handles, I always reminisce about one particular story. Once, a user sent me this message: "Please change my handle from I_love_Valya to I_love_Sveta, as I no longer love Valya..."

New Year's Masquerade of Colors and Ranks

The traditional magical tab has appeared in your profile settings. Happy New Year!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1508
  • Проголосовать: не нравится

Автор MikeMirzayanov, 19 месяцев назад, По-английски

Hi everyone!

At the ICPC World Finals in Astana, there's an Alumni Zone, and I've been invited there on September 18th from 16:30 to 17:00 (Astana time/UTC+5).

I suggest we hold a push-up challenge during this time! I'm ready to participate and would be happy to see other participants. Let's do some push-ups! Are you ready?

I'll give a Codeforces t-shirt to the winner. If this isn't your kind of sport and you're only into competitive programming, feel free to drop by to cheer and have fun.

See you there!

UPD 1: Thanks to BambooTree for the idea! I'm planning to stream (instagram live) from my Instagram account: https://www.instagram.com/mikemirzayanov/

UPD 2: People came up to me and asked about the format. I think we'll do it this way: we'll do sets of 25 push-ups. Gradually, people will start dropping out. Whoever does the most total push-ups will be the winner! So to speak, they'll hold the title of World Push-up Champion according to the ICPC World Finals version :-)

UPD 3: Instagram Live: https://www.instagram.com/reel/DADroPMMkwY/?igsh=MTlwM3N1aDlmYnZx

UPD 4: Thanks for taking part! Good luck on the ICPC Finals!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +787
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 19 месяцев назад, По-английски

It seems that neural networks are working technological wonders. Not long ago, they struggled with even the simplest tasks in our competitions, but now they are reaching new heights that cannot be overlooked.

There is reason to believe that progress will continue, and we can expect further advancements in neural networks within the realm of programming competitions.

For this reason, we are explicitly limiting the use of AI-based systems (such as various models like GPT, Gemini, Gemma, Llama, Claude, and others) for solving programming problems.

However, we recognize that AI can be a valuable tool for learning and coding assistance, so we aim to establish clear boundaries for its use.

Application of this Rule:
This rule applies strictly to in-contest participation. This includes both registered contestants and out-of-competition participants in any rated Codeforces round. If a round is unrated and this is explicitly stated in the round announcement or rules, the rule will also apply. Outside of such contests, AI tools may be used freely for practice, learning, or non-competitive problem-solving.

Permitted AI Use:

  • Translation of Problem Statements: You may use AI-based systems to translate problem statements, but you must ensure that the system does not interpret or summarize the statement. Only direct translations are allowed.
  • Code Completion Tools (e.g., Copilot): AI-based code completion systems may be used, but only for syntax and minor coding suggestions. Using them to generate the core logic or algorithms for solving problems is not permitted.

Prohibited AI Use:

  • You may not input the problem statement, its summary, any excerpt, or a sub-problem into an AI-based system to receive ready-made code or natural language descriptions of the solution.

  • You are forbidden from using AI to diagnose or resolve errors based on system feedback (e.g., after receiving a rejected verdict like "Runtime error on test 1" or similar, you are prohibited from asking AI-based systems to help you fix the issue). The use of AI tools that assist with problem understanding, logic creation, or decision-making in a way that substitutes your own reasoning is strictly disallowed.

Guidelines for Proper Use:

  • Using AI to generate simple boilerplate code (e.g., input/output functions) is allowed.
  • Relying on AI to generate algorithmic logic or the key solution is strictly prohibited.
  • If you're unsure whether a particular AI use violates the rules, please consult the competition organizers.

Cheating Detection:
This rule allows us to continue identifying cheating incidents as we did before the AI era. If two contestants’ codes match and the matched code does not exist publicly on the internet prior to the competition round, this will be considered evidence of cheating. This method ensures that AI tools are not used inappropriately to bypass individual effort and maintains the integrity of fair competition.

We will closely monitor the development of AI technologies and will adapt the rules as necessary while balancing fair competition and the benefits of AI-assisted learning.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +2558
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 20 месяцев назад, По-английски

Hello,

As you may have already noticed, tourist has reached the symbolic milestone of 4000 rating points. This is the first time in the history of competitive programming. I, personally, and the entire Codeforces team, congratulate Gennady tourist Korotkevich on this incredible achievement!

Right now, we have assigned a new rank “Tourist” to the 4+ rating. This highlights the uniqueness of the moment!

However, in the future, I would like to change this name to something a bit more neutral (or leave it Tourist?). Would you help me with this?

I’d appreciate your cool suggestions in the comments!

Here are a few options from me. Please, vote:

  • Epic Grandmaster
  • Ultimate Grandmaster
  • Godlike Grandmaster
  • Tourist
  • 4K Grandmaster
  • Grandmaster 4K
  • Legendary Grandmaster 4K
  • Joke option: Ultra HD Grandmaster
  • from Tlatoani: Champion

Feel free to propose your own options and add (likes:n) (use square brackets instead of round), where n is an integer starting from 1, to allow for voting.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +4557
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 20 месяцев назад, По-английски

Hello!

We are starting to test the long-awaited feature of non-rated registration for rounds. Here’s the plan: we will first test this feature in Testing Round 19 (Div. 3). Then, we will apply this innovation for ICPC-like rounds (Div. 4 Rounds, Div. 3 Rounds, Educational Rounds). After we have tested the feature in ICPC-like rounds, we will start using it in other types of rounds as well.

Here’s how the feature works:

  • When you register for a round (if it is rated for you), you can choose non-rated registration if you do not expect to perform at your best (for example, if you might be interrupted during the round).
  • You can change your registration type (rated or non-rated) BEFORE THE ROUND STARTS. Once the round starts, you cannot change your registration type.
  • If you register for a round after it has started, you will automatically be registered as rated (if the round is rated for you). In other words, you will not be given the option to register as non-rated.
  • After the round, the rating will be updated only for those who participated in the round and had a rated (regular) registration.

During the round, you will not be able to see whether another participant is registered as rated or non-rated. You will be able to find out later by checking if their rating has changed.

We urge you not to abuse this feature in the future and to try to participate in rated mode. Use this option only if you have a valid reason.

Let's test the new feature together: participate in Testing Round 19! We advise you to randomly choose your registration type so that we have both rated and non-rated registrations.

After the round, we will temporarily recalculate ratings to ensure everything works correctly. After that, of course, the rating changes from Testing Round 19 will be removed.

Thank you for participating!

UPD: Thank you all for testing! Share your feedback in the comments. The ratings for this round will be rolled back within a few hours.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1001
  • Проголосовать: не нравится

Автор MikeMirzayanov, 20 месяцев назад, По-английски

Hello!

Over the past few days, I've received reports that Cloudflare is sometimes blocking completely legitimate actions by regular users.

I've already figured out some of the reasons for this (I think it's better now). However, it would be helpful if, in such cases, you could leave a comment here in the format: "URL : Ray ID : description of the action." For example: "https://mirror.codeforces.com/contest/2001/submit : 8b7fd4274bc1c315 : just tried to submit a solution."

I believe that if we gather such incidents, we can quickly eliminate this unwanted behavior.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +216
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 20 месяцев назад, По-английски

UPDATE: Some time ago, there was news here that we supported C++23 by installing GCC 14 from the Winlibs project. It turned out that with this method of supporting C++23, some compatibility issues lead to significant performance drops in certain submissions. So, I tried another distribution for GCC 14: the MSYS2 project. It seems that this problem does not occur with it, and now there are no unexpected performance drops. Let's test this C++23 support option together!

Hello, Codeforces!

Together with Vladosiya, we've added support for the 64-bit g++14 C++23. You can find it under the name GNU G++23 14.2 (64 bit, msys2).

If you're using Windows, you can easily install it via our minimalistic package manager, PBOX, by running the command pbox install gcc14-64-msys2.

Thanks to the MSYS2 project! We used the distribution from the official package manager.

Your solutions will be compiled using the following command line: g++ -Wall -Wextra -Wconversion -static -DONLINE_JUDGE -Wl,--stack=268435456 -O2 -std=c++23 program.cpp -lstdc++exp.

Now you can start using C++23 features!

Please note that support for GNU G++23 14.2 (64 bit, msys2) is currently experimental. We invite you to join in the testing and experimentation process. Share your thoughts and experiences in the comments!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1505
  • Проголосовать: не нравится

Автор MikeMirzayanov, 21 месяц назад, По-английски

Hi!

Today I was shown a tweet https://x.com/deedydas/status/1818477947277525242

I'll quote the text here:

International Olympiad winners often go on to start world-changing things. OpenAI, Two Sigma, Telegram, Databricks, Perplexity, Devin, Ethereum, Udemy and even Python! You'll recognize some heavy hitters on the list. Nikolai Durov may be the most decorated of then all.

And there's also an interesting table there (I see Codeforcers there!):

click to view the table

Codeforces will soon turn 15 years old. Maybe this is an occasion to try to compile such a list? Suggest candidates in the comments! Please include at least three fields about the person: Handle, Name, and Career.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +947
  • Проголосовать: не нравится

Автор MikeMirzayanov, 2 года назад, По-английски

Gamarjoba, Codeforces!

On 06.02.2024 17:45 (Московское время) will start Codeforces Round 923 (Div. 3), the next Codeforces round for the Div.3.

Lately, I've been coming up with problem ideas less frequently, but I don't want to lose this skill. Welcome to the round where all problems are my own creation! I hope you'll enjoy them.

A huge thank you to Vladosiya for preparing the majority of problems in Polygon. Also, thanks to pashka and KAN for helping with the discussion of problem ideas.

Thank you very much 74TrAkToR, CLown1331, EternalAlexander, Jostic11, SmartCoder, KoT_OsKaR, LoveWX, MADE_IN_HEAVEN, dan_dolmatov, JuanDav111__, pedrolino, theRealChainman, yorky for testing the round.

As usual for the Div.3 rounds:

  • There will be 6-8 tasks in a round.
  • The round duration is 2 hours and 15 minutes.
  • The round follows the ICPC rules, with a penalty for an incorrect submission being 10 minutes.
  • The round is rated for participants with ratings up to 1600.
  • After the round, there will be a 12-hour open hacking phase.

Remember that only the trusted participants of the Div.3 will be included in the official standings table. As it is written in the link, this is a compulsory measure to combat unsporting behavior. To qualify as a trusted participant of the third division, you must:

  • Participate in at least five rated rounds (and solve at least one problem in each of them).
  • Not have a rating of 1900 or higher.

Regardless of whether you are a trusted participant of the third division or not, if your rating is less than 1600, then the round will be rated for you.

Good luck to all!

I really like it when the round announcement includes a photo of the authors. I plan to add one if I can take a suitable photo.

UPD 1: I found great burgers in Tbilisi!

UPD 2: The editorial is published: https://mirror.codeforces.com/blog/entry/125597 (thank you, Vladosiya).

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1435
  • Проголосовать: не нравится

Автор MikeMirzayanov, 2 года назад, По-английски

Hello, Codeforces.

Let's recall 2023, shall we?

In this post, I want to summarize this year. You know, a lot of terrible things happen in the world, and personally, this year was the hardest and most sorrowful for me. But today, we'll remember something else. We'll remember what this year was like for Codeforces.

Recently, Codeforces turned 14 years old. Not bad, right? And for many years now, when asked "What is Codeforces?" the first thing I say is — it's a community!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1748
  • Проголосовать: не нравится

Автор MikeMirzayanov, 2 года назад, По-английски

Hello, Codeforces!

If you're developing problems in Polygon, you might like this image to attract attention.

For the new members of the community, I would like to remind you that Polygon (https://polygon.codeforces.com/) is a system developed and maintained by Codeforces for preparing programming problems. It is there that authors and coordinators develop all the problems for the rounds. Moreover, I believe a significant (large?) portion of the problems for other competitions is also developed there: various stages of ICPC, national competitions of different levels, educational problems for various courses, etc. In 2023, more than 50000 problems were prepared in Polygon (only those for which a package was compiled are counted)!

We often implement such improvements in Polygon that make the process of preparing a problem more reliable. These often include various automatic warnings and tips for problem developers and/or coordinators.

Today I want to talk about two recent such innovations in Polygon.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +733
  • Проголосовать: не нравится

Автор MikeMirzayanov, 2 года назад, По-английски

Hello, Codeforces!

For the new members of the community, I would like to remind you that Polygon (https://polygon.codeforces.com/) is a system developed and maintained by Codeforces for preparing programming problems. It is there that authors and coordinators develop all the problems for the rounds. Moreover, I believe a significant (large?) portion of the problems for other competitions is also developed there: various stages of ICPC, national competitions of different levels, educational problems for various courses, etc. In 2023, more than 50000 problems were prepared in Polygon (only those for which a package was compiled are counted)!

Large language models are becoming an increasingly integral part of our lives, taking over routine and monotonous tasks.

With their help, problems created in Polygon will now have fewer typos and incorrect language constructions.

We have recently implemented three features in Polygon to ease routine tasks:

  • Translation of solutions into another programming language
  • Translation of problem statements into another language
  • Advice on improving the texts of problem statements

All these features operate on request and typically take 30-120 seconds for a response from the AI service (currently, only OpenAI GPT in our case).

While waiting for translations of solutions and statements is acceptable, waiting for advice on improving text was too tiresome.

I recently developed several problems and, despite my experience in writing statements (and even having the highly recommended Grammarly plugin in my browser), the automatic advice tool for improving text helped enhance them.

Another example: I checked the working versions of the Hello 2024 problems about a day before the round started and took the time to manually launch the edit prompter. In most (almost all?) problems, it indeed suggested errors or deficiencies in English/Russian. The corrections were minor, but why leave mistakes if they can be fixed?

Indeed, such a tool can greatly improve the grammar of statements, but using it on demand was tiresome.

As a result, I implemented background processing of the problem statements to simplify and speed up the application of this feature. Now, Polygon analyzes problem statements in the background to find shortcomings. If any are found, you will see a similar block in the problem's sidebar.

This block might not appear immediately upon changing the statement, as processing a request to the AI service usually takes tens of seconds.

Clicking on the review link will open a tool for merging changes.

This is a synthetic example. I made a few typos in the statement of my old problem. I should note that even the Grammarly plugin didn't catch all of them.

I circled one of the triangles. Click on them to transfer the proposed changes (on the right) to the text of the statement (on the left). You can only transfer for a whole paragraph at a time (that's how the tool works), but you can manually correct the left if you want to transfer part of the changes or modify them.

At the bottom of the form is a Save button that will save the updated statement.

I hope that authors and coordinators will not neglect this feature and that there will now be fewer typos and language errors in statements.

I would like to note that I see no reason to worry about data leakage when processing statements with the AI service. For example, OpenAI explicitly states that data from API requests cannot be used for training: https://help.openai.com/en/articles/5722486-how-your-data-is-used-to-improve-model-performance. After all, we've been googling problem ideas for many years to ensure the problem is new. It seems to be a similar case.

However, if you are still concerned and want to explicitly disable this feature, it can be done:

  • For a problem: via the Advanced link on the General info tab.
  • In user settings: disable this feature for all new problems you create.

Thanks for reading! Stay tuned for more updates.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1190
  • Проголосовать: не нравится

Автор MikeMirzayanov, 2 года назад, По-английски

Hello.

Today I removed the account zh0ukangyang from the rating, after first nullifying its results in the Pinely Round 3 (Div. 1 + Div. 2) and banning it.

I would like to remind you again: Codeforces insists on the policy of using a single account. Creating and using additional accounts violates this rule. In an ideal world, each Codeforces account corresponds to one specific person.

Sometimes additional accounts are created for official, usually collective purposes (writing a post on behalf of a company, etc.). In such cases, these accounts do not participate in rated rounds and we do not pay attention to them unless there is some abuse of Codeforces resources.

Unfortunately, it is difficult for us to enforce this rule in almost all cases. But I urge you to respect the rules. Please remember that by registering for any rated contest, you confirm that you are participating with your only account. If this is not the case, then you are violating the community rules. Do not do this. By breaking the rules, you automatically agree that punishment may be applied to you.

In cases where rule violations significantly affect the ratings of other participants, we may take drastic measures. Remember, with great power comes great responsibility.

In this case, zh0ukangyang was at the top of the ratings, occupying high places in the rounds.

What should you do if you already have several accounts and want to stop breaking the rules? You should not write to us with a request to delete accounts or transfer data from one account to another. All you need to do is simply stop participating from all accounts except one. Change the password to a random one and do not log into the account anymore.

For participants at the very top (somewhere in the top 50 of the ratings), we are ready to manually deal with the situation and exclude illegal accounts from the rating.

M.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +119
  • Проголосовать: не нравится

Автор MikeMirzayanov, 2 года назад, По-английски

Dear Santa Claus. Please make 2024 a happy year, not just that. Please, we all need this.

Hello, 2024!

And we have traditional gifts!

Change Handle Feature

Hurry! Only until the 10th of January, you can change your handle (but only once)! Note that it will be possible to roll back the changes or change the handle again only after a year. Be careful what you wish for.

You can change your handle to the new one that wasn't used before by anybody or which was used by you before. The links to a profile page with an old handle would automatically redirect to the actual profile.

Again, this year if you took part in at least 10 rounds you can request a handle of an inactive participant. It means that the participant should have a period of activity on Codeforces of at most 180 days, this period should be in 2020 or earlier. The inactive participant can't have posted comments, messages, and so on. It can't take part in more than 2 contests. It will be automatically renamed and informed by email. A user has the opportunity to request back his/her handle: in this case, we will roll back the change and return your previous handle to you. If you can't change your handle to another, it means that some requirements don't meet. Please do not ask me to do something with it. Especially, I do not like requests like "this is my second account, I took an interesting handle myself". I'm not Santa Claus.

Talking about handles I always
reminisce the following story. Once a user wrote me the message: "Please change my handle from I_love_Valya to I_love_Sveta, as I no longer love Valya ..."

New Year's Masquerade of Colors and Ranks

The traditional magical tab has appeared in the profile setting. Happy New Year!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +686
  • Проголосовать: не нравится

Автор MikeMirzayanov, 2 года назад, По-английски

TON Smart Challenge

Hello, Codeforces!

I'm happy to invite the Codeforces community to join an unusual competition organized by our title sponsor, the TON Foundation.

The competition will revolve around programming smart-contracts in FunC, native to the TON ecosystem. We invite the Codeforces community to participate in this contest and show that they can not only solve algorithmic problems in rounds but also delve into a new and interesting area.

Join the contest and master complex cell manipulations, smart contract storage organization, comment handling, basic cryptography, and the logic of governance smart contracts through problem-solving.

TON Smart Challenge 5 →

The tasks will go live on December 21, and the submission deadline is December 30 at 23:59:59 (UTC+4). To enter the challenge, register via the @smartchallengebot on Telegram. The bot will assist you throughout the registration process and send you notifications with the latest updates, such as the start of the contest or the tasks. The bot will also guide you on submitting your entry as a legitimate participant.

All entries must be submitted via GitHub, and your account must be at least a month old.

For comprehensive instructions on submitting your entries, refer to the official GitHub repository with the challenge tasks, which the bot will provide you on the first day of the contest.

The scoring system is simple. For each solved problem, the participant can earn a maximum of 6 points:

  • Successful solution of the problem = 5 points
  • Gas efficiency of the solution = 0 to 1 extra point

Prizes

The pool of $20,000 TON will be split equally between the top 100 participants of the leaderboard after plagiarising participants are removed. Every participant on the leaderboard will receive a participation soulbound token (SBT).

Prize pool distribution:

  • $7,000 in TON — The top 15% of eligible participants
  • $7,000 in TON — The middle 30% of eligible participants
  • $6,000 in TON — The bottom 55% of eligible participants

Impressive, right? Hurry up and join!

Good luck!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +59
  • Проголосовать: не нравится