MikeMirzayanov's blog

By MikeMirzayanov, 3 weeks ago, In English

Gamarjoba, Codeforces!

On Feb/06/2024 17:45 (Moscow time) 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, Killever, KoT_OsKaR, LoveWX, MADE_IN_HEAVEN, dan_dolmatov, jnmtz111__, 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).

Full text and comments »

  • Vote: I like it
  • +1435
  • Vote: I do not like it

By MikeMirzayanov, 3 weeks ago, In English

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!

Full text and comments »

  • Vote: I like it
  • +1738
  • Vote: I do not like it

By MikeMirzayanov, 5 weeks ago, In English

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.

Full text and comments »

  • Vote: I like it
  • +733
  • Vote: I do not like it

By MikeMirzayanov, 7 weeks ago, In English

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.

Full text and comments »

  • Vote: I like it
  • +1190
  • Vote: I do not like it

By MikeMirzayanov, 7 weeks ago, In English

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.

Full text and comments »

  • Vote: I like it
  • +119
  • Vote: I do not like it

By MikeMirzayanov, 2 months ago, In English

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!

Full text and comments »

  • Vote: I like it
  • +686
  • Vote: I do not like it

By MikeMirzayanov, 2 months ago, In English

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!

Full text and comments »

  • Vote: I like it
  • +59
  • Vote: I do not like it

By MikeMirzayanov, 2 months ago, In English

Hello!

On December 13th, the ICPC Northern Eurasia Finals (previously known as NEERC) will take place. The competition will be held at several venues: St. Petersburg, Novosibirsk, Kutaisi, and Astana. Almost 300 teams will participate in it.

Onsite Contest Current Standings →
Don't look in it if you take part in the online mirror contest

We invite you to join the online mirror of the competition: 2023-2024 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred). It will start at Dec/13/2023 10:35 (Moscow time). We recommend participating in teams, but experienced individual participants will also have fun.

The duration of the competition will be 5 hours. Of course, the round is unrated.

Good luck!

Full text and comments »

  • Vote: I like it
  • +125
  • Vote: I do not like it

By MikeMirzayanov, 4 months ago, In English

Hello, Codeforces. Friends.

I apologize, but today I will be a bit chaotic and mix personal with public. It just happened that way, I'm sorry.

Today, my mother passed away. It's hard for me to write this. Even just seeing it in text makes it feel like something from a nightmare.

She was extraordinary. It's difficult for me to articulate it right now, but take my word for it. It felt like all the best qualities one could imagine in a mother converged in her. I don't know any other people so kind, sincere, non-judgmental, capable of love, listening, befriending, supporting, and taking joy in the world around them, and bringing joy to their loved ones. Mom, it's already hard without you, it feels empty.

She had glioblastoma. It's an aggressive brain cancer that affects only a few people out of 100,000. I believe, I hope, that science will soon be able to tackle this disease. But for now, this diagnosis is a death sentence. Maybe some of you are or will be associated with medicine. I want to say thank you, I hug you.

Perhaps this is some form of catharsis, but visiting the Codeforces pages today, I pondered why I do this. What am I seeking here?

I want to enter another world. A world free from the insoluble problems of human ambition. A world where we discuss problems, algorithms, and programming.

The world is unjust and restless. It has black, white, blood-red, and some gray shades of unclear tones. But here, on Codeforces, I'm not looking for answers to all questions. I hug all of you and wish you peace, tranquility, and joy.

You may perceive this as a whim of mine, but now I don't want to see topics here that are considerably broader than programming, mathematics, and life outside our competitions. I want a united community, an intellectual oasis.

Focus on our competitions, not on global issues, will help me personally continue to be engaged in the community, develop and move it forward.

Please refrain from making posts, comments, or any other forms of expression on contentious topics like national/ethnic conflicts, politics, religion, sexual orientation, and gender identity, and any other topics distant from programming competitions that might lead to disputes or conflicts. We won't solve these problems here, we just can't.

Give me some time, and I will likely hide the most contentious posts on these topics. Please refrain from publishing anything that is beyond or close to the boundary mentioned above. By publishing materials that contain signs of such discussions, be prepared for read-only mode and other administrative measures.

I realize that I'm now limiting Codeforces and diminishing the community's involvement in our lives. But this is how I feel today, and I ask for your understanding. I wish you peace and love.

M.

P.S. Please cherish your loved ones while they are with you. Give them your attention. Bring joy to them, love them.

UPD 1: Friends, thank you very much for your attention. I read all the comments and am grateful to everyone who supported me.

UPD 2: Yesterday the funeral took place. Thank you for your support. With your help, it's easier for me to get through all of this.

Full text and comments »

  • Vote: I like it
  • +6564
  • Vote: I do not like it

By MikeMirzayanov, history, 7 months ago, In English

Hello, Codeforces.

It's scary to think about it: there are already almost 1800 rounds in the list of past contests!

I started adding a filter to the table with these rounds. Right now, you can already filter by some of the types of rounds. Here's what I've supported:

  • Div. 1
  • Div. 2
  • Div. 3
  • Div. 4
  • Div. 1 + Div. 2
  • Educational Rounds
  • CodeTON Rounds
  • Globals
  • Kotlin Rounds
  • VK Cup Rounds
  • Long Rounds
  • April Fools

Of course, I might have forgotten some types of contests. Please remind me if I missed anything. We should pay attention only to types where we have conducted several contests of that type.

I plan to expand this filter by adding more settings. Perhaps it would be good to filter by the condition "has at least one submission in this contest" (or those for which no submissions at all). What do you think?

What else would you suggest adding?

P.S. Here is how it looks on the website (some intermediate version, some options may be missing).

Full text and comments »

  • Vote: I like it
  • +1483
  • Vote: I do not like it

By MikeMirzayanov, 9 months ago, In English

Hello, Codeforces!

Unfortunately, today unexpectedly some errors occurred on the servers that we restarted before the round. We couldn't resolve them within 30 minutes. Half of the servers continue to work steadily.

I don't want to risk hosting the round. A round preparation includes too much collaboration between the authors, coordinator, and testers. I have made the decision to postpone the round so that we can hold it in the future with confidence that everything will be fine.

I apologize for the inconvenience. Today I will delve into what is happening and figure it out. There is no reason to think that something will not work for tomorrow's round.

We will announce the new date for Round 875 later.

Apologies again for the inconvenience, Mike

UPD: The round is rescheduled on May/28/2023 17:35 (Moscow time).

Full text and comments »

  • Vote: I like it
  • +962
  • Vote: I do not like it

By MikeMirzayanov, 9 months ago, In English

Hello!

Now, if you've downvoted a comment, you can report it. You should do this if you're certain that one of the rules is being violated. Currently, the list of rules is as follows:

  • Hate/Offensive: The publication contains signs of hatred, racial slurs, derogatory language or intolerance. Please maintain a respectful tone; critical comments should include thoughtful reasoning.
  • Threats/Harassment: Content that contains explicit threats or harassment, including cyberbullying or stalking, is subject to censorship. Codeforces aims to create a safe and respectful environment for its users.
  • Violation of privacy: Content that discloses personal or confidential information about an individual without their consent, such as addresses, phone numbers, or financial details, can be censored.
  • Spam/Commercial: Content that is purely promotional, contains excessive links, or includes irrelevant commercial offers. We want to maintain the quality of discussions and prevent users from being inundated with unrelated or unwanted content.
  • False information/Misinformation: Content that spreads false information, misinformation, or conspiracy theories may be subject to censorship, particularly if they have the potential to cause harm or mislead others.
  • Offtopic: The content is not relevant to the subject being discussed. When leaving a comment, it should pertain to the topic of the parent blog post or parent comment. When writing a blog post, it should be somehow connected to programming contests, algorithms, coding, or be interesting to a significant portion of users.
  • No reasonable content: The content lacks any meaning or is not interesting to almost the entire audience of the website.
  • Poorly formatted/written: The content is deliberately or accidentally written in a way that makes it difficult to read: it disregards formatting rules or contains numerous errors that impede comprehension. Please use a preview before publishing and automated proofreading systems if you are unsure about your grammar proficiency.
  • Duplicate content: This content has already been discussed, and a new discussion will not bring anything new. The author can find answers on their own by using a search engine.
  • Invalid language: Acceptable languages are only English and Russian. When creating content in the system, it is necessary to select the correct language (as a result, content in Russian will not be displayed in the English-language interface). Minimal use of other languages for stylistic purposes is allowed. For example, you can greet in your native language in a post, emphasizing your origin.
  • Cheating/Spread of cheating: The content should not contribute to encouraging cheating or other rule violations. It is prohibited to publish links to any sources containing such content.
  • Discussion of ongoing contest problems: It is strictly prohibited to discuss problems, solutions, ideas, and problem topics, as well as express your opinion about them if a contest is still ongoing and such discussions are not explicitly allowed by the event organizers. Please refrain from making any comments regarding problems until the competition is over.

This feature is currently only available for the Div. 1. Let's see how it works, and maybe I'll expand the boundaries a bit.

In the administrative interface, there is an option to quickly respond to complaints. So, if you think there's a violation, please use this feature. In the case of a complaint, I can't guarantee that the comment will be deleted, but the administration will definitely review your complaint.

If you have any ideas on how to improve (expand?) the list above, please write them in the comments. It would be preferable if your suggestions included precise formulations for both a brief title and a more detailed explanation. However, I don't want to make this list too long. It would be good to limit it to a maximum of 15 items. I plan to make it so that this list is visible when writing a comment.

I designed this subsystem in such a way that it can be implemented not only for comments but also for posts or other units of content. Let's see how it works and continue with the implementation.

Full text and comments »

  • Vote: I like it
  • +416
  • Vote: I do not like it

By MikeMirzayanov, history, 10 months ago, In English

Hello, Codeforces.

I have implemented automatic translation of problem statements in Polygon (yes, yes, through ChatGPT). Here's an example of how to use it:

  • Suppose we have a problem statement only in Russian and we want to have it in English as well.

  • Create an empty problem statement in English.

  • Go to the bottom of the problem statement and click on "Add automatic translation."

  • In the popup window, you can choose the original language for translation (we only have Russian, so there's nothing to choose) and the section of the problem statement to translate (by default, it usually selects the appropriate option — translate everything).

  • Click the "Translate" button.

  • Wait for ChatGPT to translate the text (it may take up to a couple of minutes).

  • When the translation is ready, it will be loaded into the popup window.

  • Click "Save Translation."

  • Done.

  • Remember to proofread the statement yourself. Although it's a quality machine translation, it's still a machine translation.

One useful thing to note is that this method of translation miraculously preserves most of the LaTeX markup.

When using it, remember that the API is not free. I have set quotas, and if they are exceeded, I will have to turn off the feature. I hope this doesn't happen.

There are a few more ideas on how to use ChatGPT for peaceful purposes. Don't go too far.

Full text and comments »

  • Vote: I like it
  • +1245
  • Vote: I do not like it

By MikeMirzayanov, 12 months ago, In English

Hi.

Of course, there was an unpleasant incident with the problem today. In fact, the problem almost coincided with another problem in the old round, which was hosted 5 years ago.

You, of course, are shocked. You, of course, think that the round should be unrated.

You are wrong. Here's why.

Full text and comments »

  • Vote: I like it
  • +662
  • Vote: I do not like it

By MikeMirzayanov, 14 months ago, In English

Hello, Codeforces.

It's time to take stock of last year. Shall we begin? And we are happy to sum up the results of the last season of Global Rounds. We announce the results!

We remind you that the global rounds are a joint initiative of XTX and Codeforces.

We hold 6 such rounds per year. All of them are open to both divisions. At each such round, 50 brand T-shirts were handed out, and we are happy to give T-shirts to all problem authors.

The prizes for the 6-round series are:

  • In each round top-100 participants get points according to the table.
  • The final result for each participant is equal to the sum of points he gets in the four rounds he placed the highest.
  • The best 20 participants over all series get sweatshirts and place certificates.

Full text and comments »

  • Vote: I like it
  • +254
  • Vote: I do not like it

By MikeMirzayanov, history, 14 months ago, In English

Hello, Codeforces!

The year 2022 is finally coming to an end. Let's be clear. It's been a terrible year. Tomorrow I will make a wish, and you can easily guess which one.

I am writing these lines, and in a few minutes the Good Bye 2022 round will begin. And this inspires optimism and even pride in the community. Despite all these difficulties and troubles, we make rounds together and participate in them. Let's be grateful. And for this, let's say symbolic thanks to 2022 and a lot assistants: coordinators, problem writers, testers, participants and sponsors. We are many and we are together.

Can I have a little more detail on the Codeforces team?

Let me separately say thanks and words of admiration for the work of the coordinator of coordinators KAN and the senior developer geranazavr555. Both of you bring a lot to Codeforces, but your activity is not always noticeable. We appreciate it. Thank you!

I send thanks to Una_Shem: in the difficult conditions of broken global logistics, you do a lot so that the gifts are delivered to the winners, and the authors receive their reward.

Thanks to unreal.eugene for contributing to the development and kuviman for helping with setting up ci and other pipelines.

Who I will not say thank you to, it's cheaters! Ugh, to be like that. Please stay in 2022.

I'd like 2023 to be the year we regret leaving exactly one year from now.

Please make us happy!

Make our wishes come true.

* Image by ligrenok.

Full text and comments »

  • Vote: I like it
  • +1304
  • Vote: I do not like it

By MikeMirzayanov, 14 months ago, In English

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

Hello, 2023!

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 which 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!

Full text and comments »

  • Vote: I like it
  • +1424
  • Vote: I do not like it

By MikeMirzayanov, 14 months ago, In English

Hello Psyho, this is Mike. We are happy to help with likes. So, Codeforces?

He waits for your likes here: https://twitter.com/FakePsyho/status/1605570944537280512?t=MV0OksdeUb8FXKApncDZcw&s=19

I believe that 40 facts are too few for us. We need more!

Full text and comments »

  • Vote: I like it
  • +1340
  • Vote: I do not like it

By MikeMirzayanov, 15 months ago, translation, In English

Hello!

Tomorrow (December 7th) the ICPC Northern Eurasia Finals (previously known as NEERC) will take place. The competition will be held at several venues: St. Petersburg, Barnaul, Kutaisi and Almaty. Almost 300 teams will take part in it.

Onsite Contest Current Standings →
Don't look in it if you take part in the online mirror contest

We invite you to join the online mirror of the competition: 2022-2023 ICPC, NERC, Northern Eurasia Onsite (Unrated, Online Mirror, ICPC Rules, Teams Preferred). It will start at Dec/07/2022 11:05 (Moscow time). We recommend participating in teams, but experienced individual participants will also have fun.

The duration of the competition will be 5 hours. Of course, the round is unrated.

Good luck!

Full text and comments »

  • Vote: I like it
  • +158
  • Vote: I do not like it

By MikeMirzayanov, 16 months ago, In English

Hi.

Sometimes it seems like all you have to do is change a couple of inscriptions on the site and that's it. But it's not that simple.

For example, I decided to change my friends to followers/subscribers. In fact, the relation we have here is more like a following or a subscription than a friendship.

But there's a tiny issue.

Sometimes this relationship is used in the interface in one direction (we are talking about those who follow us). Then everything is easy in this case, we can mention them as your followers.

Sometimes, it's about those you're following. Then a little more difficult. The best thing that I came up with and advised me is the term "following". But replacing "Friends Standings" with "Following Standings" (or "Followings Standings"?) looks so-so. Likewise, what was "Friends Rating Changes" and will it be "Following Rating Changes" (or "Followings Rating Changes")? Looks really clumsy.

Probably, you can change the interface so that to get rid of these menu items at all. But I don't want to do that now. It would be wonderful to find some way of writing that would be most successful.

Thanks to Ivan and Peter, with whom I have discussed this problem a little, but I haven't found a good solution.

What are your thoughts?

Full text and comments »

  • Vote: I like it
  • +331
  • Vote: I do not like it

By MikeMirzayanov, 19 months ago, In English

Hello, Codeforces.

Look what an interesting thing I've been working on the last few days. Now, if a problem uses test cases and its validator is written in the recommended way (using setTestCase), then the example inputs are displayed using different colors.

Just follow the link and see how beautiful it turned out: https://mirror.codeforces.com/contest/1714/problems!

So far I have enabled this only for the last few rounds, but if everything works as intended, I will enable it for more rounds.

In order to support this, I had to tinker a lot. I made changes to testlib.h so that the validator can return test markup. Support for this markup required changes in various system services. But I think it's worth it!

The coolest thing is that it was possible to implement all this without changing existing problems. If a validator is used using the setTestCase feature, then this improvement can be applied to this problem.

Of course, it would be cool to have similar highlighting in example outputs as well. And even, say, synchronously highlight an input-output test case pair when hovering over. Unfortunately, standard checkers are often used, in which information about test cases is lost. Perhaps I'll apply some heuristics to make it work in most cases.

Full text and comments »

  • Vote: I like it
  • +3167
  • Vote: I do not like it

By MikeMirzayanov, 19 months ago, In English

Hello, Codeforces.

I have wanted for a long time and now, finally, I sat down and did it.

Many of you are familiar with my Testlib project. This is a library that helps you develop problems if you are using C++. In the case of problems for Codeforces rounds, its use is mandatory. It seems to me that it is almost a de facto standard for preparing materials for completely different olympiads and competitions.

The history of С++-Testlib is almost lost in centuries, I published the first version in 2005.

Nowadays, making edits to Testlib has become tricky. The code grown to thousands of lines, also it has too long a history. This increases the likelihood of accidentally changing some aspect of behavior, which will jeopardize the holding of a Codeforces round or another important competition. In short, making a bug in this code or changing behavior anywhere is highly discouraged.

So I recently took the plunge and wrote some tests for Testlib. Here's what tests can do now:

  • check that all cpp files in the repository are compiled (test test-000_compile-all-cpp)
  • check the plausibility of the behavior of a simple sval.cpp validator on a series of files (test-001_run-sval test)
  • check the plausibility of the behavior of the two checkers fcmp.cpp and wcmp.cpp on a series of files (test test-002_run-fcmp-wcmp)
  • check that the behavior of the random number generator has not changed (test test-003_run-rnd)
  • check the behavior of some functions and the behavior of InStream and opt in a series of unit tests (test test-004_use-test.h)

More good news. All this was automated through GitHub Actions. Tests are automatically run on any push or pull request.

Full text and comments »

  • Vote: I like it
  • +711
  • Vote: I do not like it

By MikeMirzayanov, 20 months ago, In English

Hello, Codeforces.

We have exciting news! Look at the logo. See the changes?

Yes, we are happy to announce our new sponsor and partner – the TON Foundation!

We appreciate their support!

The Open Network (TON) is a fully decentralized layer-1 blockchain designed by Telegram to onboard billions of users. The TON Foundation is aimed to further develop and advance the TON Blockchain and its related products for a mass audience.

Andrew Rogozov, founding member at the TON Foundation, says, "We strongly believe in the idea of competitive programming itself, because it is in the TON Blockchain DNA." The TON Blockchain protocol was designed by Nikolai Durov — who is a two-time ICPC world champion, a three-time IMO gold medalist, a multiple IOI medalist, and a co-founder of Telegram — and other winners of international competitions. Now the TON Blockchain core team consists of winners of blockchain contests held by Telegram.

The TON Foundation has already supported the CodeTON Round 1 earlier in March 2022. More than 22K users were registered, and 12K participants made at least one submission. "Codeforces is an unparalleled platform for developing the programming skills of coders all over the world. We are of one mind with the Codeforces team that such contests reveal a treasury full of talents," adds Andrew Rogozov.

I send rays of gratitude to Telegram and personally to Pavel Durov, who has supported our community for many years. With this help we have come a long way — we have run hundreds of rounds, developed the ecosystem, our community has grown hundreds of times. And we are moving forward! Support from the TON Foundation pleases with its succession.

I'm happy to announce that starting July 2022, we have the option to increase problem writer payouts. Hooray!

  • Div. 2: $300;
  • Div.1 + Div. 2: $600;
  • sponsored round: $900.

In addition, we continue to encourage payments in cryptocurrency. In this case, we pay out +25%. I look forward to new rounds on our platform.

— Mike Mirzayanov

Full text and comments »

  • Vote: I like it
  • +1188
  • Vote: I do not like it

By MikeMirzayanov, 20 months ago, In English

Hello!

I always like to think that Codeforces is not only a place where you come to compete but also a place where you can learn. Learn new things.

Two years ago, we launched the EDU subproject, a platform for publishing classes. There are already several classes, but there are so many interesting topics around!

The Codeforces team can write the platform, make the technical foundation, but it would be great to write content with the support of the community.

Thanks to the support of competitive programming alumni, we have a budget for targeted grants for the preparation of new classes in the EDU section. Hope we have new content soon!

We are looking for lesson authors who could prepare and record one or more lessons. Those who are now red or have ever been red are invited.

We assume that one lesson (class) consists of:

  • 3-5 steps: break the lesson into logical parts,
  • video materials explaining the topic (usually, the total duration is 60-120 minutes),
  • text summary
  • a thematic training set of problems with a wide range of complexity (from the most basic on this topic to quite tricky ones)
  • first of all, we would like to cover the main topics of competitive programming — DP, graphs, basic data structures, etc.

Please note that we expect you to record and edit the video by yourself. Look at already recorded lessons to understand the expected format and structure of lessons. We have a rich history of teaching, so you can count on our advice and assistance in preparing lecture plans and problems. If video editing scares you, then here we can help.

We invite you to help grow the community and make history. I am sure that the recorded classes will be watched by tens of thousands of people (or more?).

The reward for recording one class is $1000.

If you are now red or have ever been red and you are interested in this offer, then fill out the form (open until June 28th).

Apply →

Full text and comments »

  • Vote: I like it
  • +772
  • Vote: I do not like it