MikeMirzayanov's blog

By MikeMirzayanov, history, 5 years ago, In English

I almost copied my previous blog post to separate two discussions: about Div. 4 in general and about Round 640. Please, visit this blog post to discuss Div. 4 rounds.

Hello Codeforces!

Yes, it is not a mistake I decided to run the first Div. 4 round: Codeforces Round 640 (Div. 4)! It starts on May/09/2020 17:35 (Moscow time).

The format of the event will be identical to Div. 3 rounds:

  • 5-8 tasks;
  • ICPC rules with a penalty of 10 minutes for an incorrect submission;
  • 12-hour phase of open hacks after the end of the round (hacks do not give additional points)
  • after the end of the open hacking phase, all solutions will be tested on the updated set of tests and the ratings recalculated
  • by default, only "trusted" participants are shown in the results table (but the rating will be recalculated for all with initial ratings less than 1400 or you are unrated participant/newcomer).

I urge participants whose rating is 1400+ not to register new accounts for the purpose of narcissism, but simply to take part unofficially. Please do not spoil the contest to the official participants.

Only trusted participants of the fourth division will be included in the official standings table. This is a forced measure for combating with unsporting behavior. To qualify as a trusted participants of the fourth division, you must:

  • take part in at least two rated rounds (and solve at least one problem in each of them),
  • do not have a point of 1600 or higher in the rating.

Regardless of whether you are a trusted participant of the fourth division or not, if your rating is less than 1400 (or you are a newcomer/unrated), then the round will be rated for you.

Please, read some of my thoughts about the problems of this round:

  • Don't expect A+B level problems :-) It is a real contest with easy but problems. I hope most problems fit in range D3A-D3D problems.
  • I'm not sure about order of problems. Try to read all problems or at least most of them. Testers expressed skepticism about the order of the problems but suggested different pairs of problems to swap.

We are just starting, so the complexity of the problems may deviate somewhere from your or my expectations. Wait and see.

The first "thank you" is sent to antontrygubO_o, who helped with the review and selection of problems.

Many thanks to the testers: pashka, 300iq, vovuh, Golovanov399, spookywooky, kocko, Sho, igor_kz, Sho, scott_wu, bfs.07.

I hope you enjoy the problems, and the round will be interesting!

Please, leave in comments your thoughts about exactly this round. If you want to write something about the general idea of Div. 4, then visit this blog post.

UPD: Editorial is published!

Full text and comments »

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

By MikeMirzayanov, history, 5 years ago, In English

Hello Codeforces!

Initially, here was an announcement of the first round for the fourth division. But currently, in comments there is the huge discussion of division 4 rounds in general. Honestly, I read all (almost all) comments.

I decided to replace the text of this post to match the comments better. Also, I'll write one more post separately to discuss problems. And this post will be about division 4 rounds in general.

About Div4 rounds:

  • I'm not afraid of a queue or servers overload: it is technical challenges and my task is to resolve them. The previous biggest rounds were not overshadowed by technical problems and judging delays, they went well. I see no reasons why something should work much worse in the rounds for Div. 4 (and if it does, then this should be fixed).

  • I don't think that Div. 3 rounds are too dificult. Actually, they are quite good for beginners. They are noticeably easier than Div. 2. Almost every round trusted participants solve all problems, many participants solve all without one problem. I think in general they are OK.

  • Now I don't like the idea to run in parallel Div. 3 and Div. 4 rounds (like we do for Div. 1 and Div. 2). Div. 3 rounds are harder to prepare and I don't think we can host them more than once per ~2 weeks. It means that such rounds will not give new contests for newcomers and grays/greens (I think Div. 3 are already interesting rounds for them to take part). But separate Div. 4 rounds will be easier to prepare (even than Div. 3) and probably making them we can offer more contests for low rated participants.

  • I'd like to repeat: Div. 3 and Div. 4 rounds doesn't affect the rate of Div. 1 and Div. 2 rounds. The coordinators focus only on Div. 1 and Div. 2 rounds. All Div3 (and future, if any, Div4) rounds are prepared without any help from the coordinators.

  • I do not think that by hosting Div. 4 rounds, we will lower the quality of problems. Now, I don't plan to use absolutely A+B level problems even for the Div. 4. I think problems of level like Div3A-Div3D are good candidates.

Thanks for your attention to this idea!

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Hello, Codeforces!

Paul stingray Komkoff is my hero! He found some issues in the network configuration. The most important of them was about flow control auto-negotiation: in case of our network routers the number of dropped packets reduced in times. Thanks!

To be sure that it really helped to fix the issue I ask you to take part in Testing Round 16 (Unrated). It will start on May/07/2020 17:05 (Moscow time). Probably, it will contain 3 easy problems which are not prepared for now (I'll use some old problems, I think). The only reason to host the round is to check the system under a load. It will be an unrated round.

I am upset about what happened with the last round. Once again, I apologize to both the participants and the writer, coordinator and testers. I wrote Monogon about the incident and apologized.

I am sure that the only way to absolutely prevent unrated rounds is just don't host them. And this is not my way. The most popular rounds were hosted without noticeable technical problems. And I'm sure the main records are yet to come. I ask the writers and coordinators to look forward with optimism and try to please us with problems.

Please, join to the testing round. See you!

— Mike.

UPD: Thank you for testing! I think the system worked great. It seems recent reconfiguration improved system performance and stability. We have some rare "Judgement failed" after database update (I'll try to fix them asap).

Full text and comments »

Announcement of Testing Round 16 (Unrated)
  • Vote: I like it
  • +1625
  • Vote: I do not like it

By MikeMirzayanov, 5 years ago, In English

Sorry about it. Probably, the main reason is a network misconfiguration which leads to degradation of connection speed between some services. Strange things that I didn't change any network settings. Actually, both slow judging and logout issues are sides of the same coin. I asked for the help of the experienced specialist to help me. We are continuing to work on it. No more details at this moment. Sorry again. I'll run testing round before the next round to be sure that everything is OK.

Full text and comments »

  • Vote: I like it
  • -65
  • Vote: I do not like it

By MikeMirzayanov, 5 years ago, In English

Hello, Codeforces!

Unfortunately, I report that I decided to reschedule this round. I'm afraid that something might go wrong. Some strange database behavior has appeared, which leads to slow operation in completely unexpected places (it never was and should not be). I will work hard to fix it. My recent tests show that this can dramatically increase judging time (and leads to a huge queue). I don't want to risk the efforts of the writer, the coordinator, testers, and your time. Sorry about it, I was trying to fix it for many hours but I need more time. Hope it will be a great round!

Mike.

UPD 1: I temporarily rescheduled it on May, 6. But I'll discuss the date with the writer and coordinator and reschedule it again to the date they want.

UPD 2: Monogon approved that May/06/2020 17:35 (Moscow time) is good new date and time for the round. See you in 3 days!

UPD 3: It seems I've fixed the issue. It turned that it was connected with week ago incident. Now it is 4 AM and time to sleep.

Full text and comments »

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

By MikeMirzayanov, history, 5 years ago, In English

Hi!

As many have noticed, sometimes problem ratings were assigned in a strange way that was not consistent with expectations. For example, ratings for complex problems of Div3 rounds were often overestimated. This was mainly due to the fact that high-ranking unofficial participants did not try such problems. It turned out that despite the high rating of a participant, a problem is not solved by the participant, and this fact raised the rating of the problem. It is not entirely correct to take into account only official participants since ratings for difficult problems are sometimes more accurately determined by unofficial participants.

Somewhere in the comments, I've read that problem ratings are set manually. Of course, this is not so. The process is automated, but I start it manually (I will fix it somehow).

I changed the formulas for calculating problem ratings, now they slightly better correspond to expectations. New problem ratings are already available on the website. I don't think they are perfect (but I hope that they are much better). If somewhere ratings obviously are wrong — it would be great to see such examples in the comments.

Thanks!

UPD 1: Thank you for examples of unexpected problem ratings. I'll try to fix them (I don't think that it is possible to fix all of them without manual work) and return with an update.

UPD 2 [May, 2]: I made another attempt to adjust the coefficients, to take into account some facts differently. The ratings are recalculated again. I carefully went through most of the comments and indicated new ratings. Now it looks a little better. I afraid, there are still some issues with some problems. Try to find them and demonstrate them in the comments. Thanks!

Full text and comments »

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

By MikeMirzayanov, history, 5 years ago, In English

Hi! Yes, I see that the top-rated block and some other features not working, but I don't have the strength to deal with it right now. Also, I didn't fix the ratings because of wrong division cases issues. Since yesterday, I was working on an unexpected behavior of the system on the increased load. A lot has been done. But three hours of sleep in the last two days is too little for me and I need some rest. Tomorrow I'll return to fix the issues and hope to deal with them. What about your quarantine?

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Hello, Codeforces.

I hope you wash your hands and feel great.

I added the support of 64-bit g++. If you are using Windows, you can easily install it via our minimalistic package manager PBOX running the command line pbox install msys2-mingw64-9.

Your solutions are compiled with the command line g++ -static -DONLINE_JUDGE -Wl,--stack=268435456 -O2 -std=c++17 program.cpp.

Now you can try to use int128 and other 64-bit specific features! In fact, I am slightly worried that the presence of such features may widen the gap between C ++ and other languages. Wait and see.

Currently, support for 64-bit C++ is experimental. For example, I would not be surprised if IO on it works slower in some cases (it is necessary to test!). I invite you to join the testing and experimentations. Share your impressions in the comments!

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Hello Codeforces!

You may know that the crowdfunding campaign on the occasion of the 10th anniversary of Codeforces is in full swing! I am pleased to inform you that the Reply Code Challenge not only prepare a great competition but also supported Codeforces, which means all of us! Thanks!

Please pay attention to the information below. I am sure that this is a great chance to compete.

And here is the message from the Reply Code Challenge:

Hello Codeforces!

We're glad to invite you to the upcoming Reply Code Challenge, on 12 March. It's a free online team-based challenge and you can choose between:

  • Standard Edition: designed for university students and professionals.
  • Teen Edition: designed for students aged 14 to 19.

Great prizes are waiting for the winning teams:

  • Standard Edition: each member of the winning team will win a Mac Book Pro™ 16’’. Each member of the second and third place team will receive Apple Watch Series 5™ and Apple Air-pods Pro™
  • Teen Edition: 5.000€ for the first team in the leader board, 2.000€ for the second and 1.000€ for the third place team.

When&Where?

Online at challenges.reply.com on March 12th from 4.30pm to 8.30pm CET. To play you must form a team by March 11th.

Follow us on our Telegram Channel, WIP but ready soon for the Challenge: https://t.me/replychallenges

Full text and comments »

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

By MikeMirzayanov, 5 years ago, translation, In English

Hi Codeforces!

The platform recently turned 10 years old. We accept your congratulations at https://mirror.codeforces.com/10years. Please review the progress in 2019 and support the anniversary crowdfunding campaign. Your donation will be a contribution to the future of Codeforces, will help its development and work. We need resources to continue to host rounds, not to stop developing, to innovate and to maintain the existing infrastructure.

In 2019, together with numerous writers the coordinators worked on problems: KAN, 300iq, cdkrot, arsijo and recently joined isaf27. And this year, rounds coordinated by other experienced members of our community can be expected. Intrigued?

The main innovations in the platform are implemented by me and the developers: kuviman, cannor147 and geranazavr555. Una_Shem provided great organizational assistance. Thanks!

I send special rays of gratitude to problem writers and testers! This year we have had more rounds than ever before!

Time to take stock of 2019.

Partner Events

We are pleased to hold programming competitions with companies or for companies. I'm sure this is a great way to support the community of young programmers and hire talented candidates. Here is a list of our main partners this year:

  • Telegram and personally Pavel Durov is supporting Codeforces activities for many years, every regular round is held with their help, thank you!
  • Mail.Ru — Technocup and Russian AI Cup
  • VK, VK Cup — now a personal multi-track competition for Russian-speaking programmers
  • XTX Markets, Codeforces Global Rounds — a series of 6 rounds with a separate scoring and souvenirs for the best participants
  • Harbour.Space University — a series of educational rounds, the selection of summer school Tech Scouts
  • JetBrains, Kotlin Heroes Rounds — Kotlin programming language contests
  • Huawei — research competition (marathon) with elements of machine learning
  • Forethought, Forethought Future Cup — a two-level competition with the Final at Forethought headquarters (San Francisco) and the mirror contest for worldwide participants
  • Dasha.AI, Dasha Code Championship — a two-level competition with the Final at St. Peterburg and Novosibirsk (and the mirror contest for worldwide participants)
  • VeeRoute — research competition (marathon)
  • Microsoft, Microsoft Q # Coding Contest — unusual quantum computing competition

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Hello, Codeforces.

Sorry, but for a reason independent of Codeforces, we are forced to cancel the round. It was planned as a mirror of an onsite-olympiad, but suddenly it turned out that this would not work.

We will try our best to please you with other rounds. Stay tuned!

The round Educational Codeforces Round 80 (Rated for Div. 2) will start on Jan/14/2020 17:35 (Moscow time). Hope to see you as a participant!

MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

I am happy to wish you a Happy New Year! I wish you a great, bright, interesting New Year! Just believe that it can become so: difficulties will be left behind, and ahead of you will be a joy of victories and discoveries.

I wish all of us new interesting problems, records and achievements! Set new goals and be sure to try to achieve them! And do not go far, we will try to make your 2020 year more fun!

I thank with all my heart for the contribution to the community of coordinators, problem writers, testers, and those who wrote interesting posts and comments. Many thanks to the sponsors, partners and customers: you help the community not to stand still, give the opportunity to hold interesting events. Thanks to all visitors to the website and just not indifferent.

See you in the new year!

MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 5 years ago, translation, In English

Hello!

It seems to me that over the past few years I have been writing something right while all normal people are celebrating the New Year. It's my tradition now! Actually, most of the core functionality of Codeforces was written on the New Year holidays of 2010: authorization, blogs, basic support for competitions.

Perhaps I want to spend the next year with interest improving something in the Codeforces infrastructure (yep, how you celebrate the New Year — so you will spend it). Or maybe it's just that it's not necessary to work on New Year's and I'm doing not what you need right now, but what would be nice to do someday.

This time I took a little time to add support for parsing command line parameters in testlib. I really don't like to write such lines of code int n = atoi(argv[3]); in generators. Actually for several reasons:

  • it is unsafe that the 3rd command line parameter may be absent;
  • It is unsafe that the 3rd command line parameter may not be a valid 32-bit integer.

Now, instead, you should write this: int n = opt<int>(3);. In addition, you can write like this int64_t m = opt<int64_t>(1); or bool t = opt<bool>(2); or even string s = opt(4);.

In addition, I supported named parameters. If there are too many parameters, then the entry g 10 20000 a true is less readable than g -n10 -m200000 -t=a -increment.

In this case, now you can use the following code snippets in your generator:

int n = opt<int>("n");
long long n = opt<long long>("m");
string t = opt("t");
bool increment = opt<bool>("increment");

You can freely mix parameter reading by index and by name.

The following options for writing named parameters are supported:

  • --key = value or-key = value;
  • --key value or-key value — if value is not a start of a new parameter (does not start with a hyphen or does not follow the letter after one/two hyphens);
  • --k12345 or-k12345 — if the key k is one letter and then a digit comes;
  • -prop or--prop — to enable boolean properties.

Below are examples of how to run several fictional generators:

g1 -n1
g2 --len=4 --s=oops
g3 -inc -shuffle -n=5
g4 --length 5 --total 21 -ord

Perhaps in a hurry, I can write something not in the best way, or even with bugs. I suggest you look at my last commits. I will be glad to suggestions or fixes.

Thanks for attention.

What traditions do you have for the New Year?

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Do you already have a New Year's mood?

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 2016 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 requirement doesn't meet. Please do not ask me to do something with it. 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
  • +748
  • Vote: I do not like it

By MikeMirzayanov, 5 years ago, translation, In English

Many thanks to cannor147 and geranazavr555 for the help with the translation into English.

1259A - Happy Birthday, Polycarp!

Problem Writer: MikeMirzayanov

Editorial
1259B - Make Them Odd

Problem Writer: MikeMirzayanov

Editorial
1259C - As Simple as One and Two

Problem Writer: MikeMirzayanov

Editorial
1259D - Let's Play the Words?

Problem Writer: MikeMirzayanov

Editorial
1259E - Two Fairs

Problem Writer: MikeMirzayanov

Editorial
1259F - Beautiful Rectangle

Problem Writer: MikeMirzayanov

Editorial
1259G - Tree Elimination

Problem Writers: Endagorion

Editorial
1276E - Four Stones

Problem Writers: Endagorion

Editorial
1276F - Asterisk Substrings

Problem Writers: voidmax

Editorial

Full text and comments »

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

By MikeMirzayanov, 5 years ago, translation, In English

This weekend, on Dec/14/2019 14:05 (Moscow time) we will hold Codeforces Round 606. It is based on problems of Technocup 2020 Elimination Round 4 that will be held at the same time.

Technocup is a major olympiad for Russian-speaking high-school students, so if you fit into this category, please register at Technocup 2020 website and take part in Technocup 2020 - Elimination Round 4.

Problem authors are me, Endagorion and voidmax. Many thanks to the testers: Kostroma, never_giveup, Supermagzzz, AdvancerMan, Stepavly, unreal.eugene, cannor147 and geranazavr555!

Div. 1 and Div.2 editions are open and rated for everyone. As usual, the statements will be provided in English and in Russian. Register and enjoy the contests!

Good luck on the round
MikeMirzayanov

UPD 1: The scoring:

  • D1: 500-1000-1250-2000-2250-3000
  • D2: 500-1000-1500-1500-2000-2500

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Hello,

Initially, the problem 1255B - Fridge Lockers was with no constraint $$$m \le n$$$ (just $$$m \le 2000$$$). Almost all participants (and me) invented wrong solution like: "make a cycle plus take the cheapest edge $$$m-n$$$ times". The counter-example is $$$n=5$$$, $$$m=6$$$ and prices are $$$3, 4, 1, 4, 5$$$. Look into the picture:

It was really unexpected for my intuition (and, of course, failed a proof).

Do you know the solution for this case?

Full text and comments »

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

By MikeMirzayanov, 5 years ago, translation, In English

Hello!

ICPC Southern and Volga Russian Regional Contest (Northern Eurasia) 2019 has ended on October 15. There were 76 teams onsite in Saratov, most of them were invited because of their result on the qualification stage.

On Oct/27/2019 12:35 (Moscow time) will start online-mirror 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest (Online Mirror, ICPC Rules, Teams Preferred).

In this contest I play a role of Cheif Judge and the jury teams consists of ex-participants of ICPC from Saratov and jury members from other cities. Many thanks to all of them! I hope you will like the problems!

I invite ICPC teams and individual participants of Codeforces competitions to take part! Sure, the contest will be unrated.

MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Hello!

Codeforces supports a wide range of languages. Just yesterday I supported Java 11.

On the other hand, my website is not only just open public rounds and trainings, but also an advanced system of groups, custom domains and mashups. This ecosystem makes it possible to conduct private trainings, local contests/olympiads, provides the work of computer science clubs, and so on.

Sometimes you ask me to somehow limit the languages that can be used in a particular contest. For example, an official competition is held that does not support Rust. Or this contest is a practical session specifically for classes in Python.

Now you can configure allowed programming languages (more precisely, their groups) for your mashups and private trainings. Thanks for the help to geranazavr555 who helped to realize this opportunity!

Here are some screenshots of how it looks in action.


Edit a contest settings to specify the list of allowed languages.



You can choose program languages groups your contest supports.

Hope you enjoy the feature,
MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 5 years ago, translation, In English

Hi Codeforces!

Unfortunately, ill-wishers thwarted the round by making DDOS on our infrastructure. Neither the coordinator nor the writers of the round are subjects to blame for the failure. Please do not downvote the announcement of the round. I think that this situation is an additional reason to support the writers. They worked hard and prepared good problems!

Apparently, such an attack should be regarded as a symptom of the fact that Codeforces outgrew the youth phase and entered serious adult life. Of course, we will respond with adequate measures to protect ourselves from such incidents. Fortunately, for almost 10 years of work, a large community has formed around those who care about Codeforces. We are not worried about possible additional expenses or efforts. We can do this. The rounds must go on.

MikeMirzayanov

UPD 1: All three of today's rounds will be unrated.

UPD 2: Hooray! Today we've survived another DDOS attack. The round was not perfect, but it was not ruined!

Full text and comments »

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

By MikeMirzayanov, 5 years ago, In English

Hello.

It is not an official announcement of the events. Just information: The contest on 22.09.2019 12:05 (Московское время) will be only for onsite finalists. The mirror round will be the next day on 23.09.2019 17:05 (Московское время).

Hope to see many participants. Guess, who are the main writers of the Final?

Full text and comments »

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