Please, try EDU on Codeforces! New educational section with videos, subtitles, texts, and problems. ×

### MikeMirzayanov's blog

By MikeMirzayanov, 14 hours ago, ,

In 2020 (as in 2019), with the support of XTX Markets, 6 rounds of the new Codeforces Global Rounds will be held. These will be common rounds for both divisions of 7–9 problems each. The duration of the rounds will be 2-3 hours, depending on the number and complexity of the problems. All such rounds will be rated for all participants. At each such round, 50 brand T-shirts will be handed out, and we will be happy to give T-shirts to all problem authors and problem testers.

The prizes for the 6-round series in 2020:

• 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.

Current standings after three rounds (sorted by total points in three rounds):

Place Contestant = GR 7 GR 8 GR 9
1 tourist 2706 1000 706 1000
2 Um_nik 1606 706 403 497
3 ecnerwala 1266 235 1000 31
4 yosupo 786 211 575
5 scott_wu 706 706
6 Radewoosh 703 244 443 16
7 jiangly 646 497 149
8 Swistakk 602 277 90 235
9 neal 584 131 277 176
10 Marcin_smu 575 575
10 boboniu 575 575
12 maroonrk 572 149 371 52
13 Petr 547 497 50
14 kefaa2 523 325 198
15 Benq 504 307 176 21
16 ltst 493 94 92 307
17 LayCurse 462 171 291
19 Egor 446 107 265 74
20 hank55663 443 74 291 78
20 cuizhuyefei 443 443
20 tEMMIE.w. 443 443
23 Golovanov399 438 161 277
24 tlwpdus 433 235 198
25 lqs2015 424 21 403
26 Motarack 404 58 346
27 TLE 403 403
28 heno239 400 29 371
29 zeronumber 393 68 325
30 WZYYN 371 371
31 snuke 357 32 325
32 hos.lyric 354 128 226
32 PavelKunyavskiy 354 346 8
34 eatmore 346 346
34 Noam527 346 142 204
36 natsugiri 341 192 149
37 aid 339 254 85
38 ksun48 333 122 211
39 KAN 307 307
40 Yongaron 292 161 131
41 mango_lassi 291 138 153
43 RomaWhite 265 265
43 mrscherry 265 265
45 mtsd 258 145 113
46 zeus_orz 254 254
46 frodakcin 254 254
48 xiaowuc1 244 244
48 conqueror_of_tourist 244 244
50 ko_osaga 226 226
50 orz 226 226
52 DmitryGrigorev 220 16 204
53 ohweonfire 218 218
53 DCXDCX 218 218
53 79brue 218 218
56 uwi 211 211
57 amnesiac_dusk 204 204
58 stevenkplus 202 21 181
59 Ilya_MSU 199 74 125
60 djq_fpc 198 198
61 zeliboba 193 27 166
62 HashimotoNanami 192 192
62 .I. 192 192
64 kort0n 191 34 157
65 Egor.Lifar 186 186
65 Sooke 186 186
65 Errichto 186 186
68 Maksim1744 181 181
68 jhnan917 181 181
70 FizzyDavid 176 176
71 Amoo_Safar 175 4 171
72 I_love_chickpea 171 171
73 kraborak 166 166
74 _h_ 161 161
76 chokudai 153 153
76 zylber 153 153
76 duality 153 153
79 Kamfucius 145 145
80 Merkurev 142 142
80 GreymaneSilverfang 142 142
82 tatyam 138 138
82 Shayan 138 138
84 RNS_CUS 135 135
84 hepth 135 135
84 dario2994 135 135
87 dyxg 131 131
87 ATS 131 131
89 nuip 128 128
89 LHiC 128 92 36
91 Martin53 125 125
91 sigma425 125 125
93 littlelittlehorse 122 122
93 dlalswp25 122 122
93 Potassium 122 122
96 Tima 119 119
96 dreamoon_love_AA 119 119
98 yhx-12243 117 72 45
99 yokozuna57 116 116
99 PinkieRabbit 116 116
99 betrue12 116 116
102 Pigbrain 113 113
102 zhangguangxuan99 113 113
104 tempura0224 110 110
104 Eliden 110 110
107 yashChandnani 107 107
107 Temotoloraia 107 107
109 Reyna 106 72 34
110 kmjp 105 105
110 kriii 105 105
112 RNS_KSB 102 102
112 Thienu 102 102
112 MofK 102 102
115 antontrygubO_o 100 1 99
116 lzr_010506 99 99
116 mayaohua 99 99
118 skylinebaby 97 97
118 shion_ 97 97
118 zscoder 97 97
121 Nazrin 94 94
121 ollpu 94 94
123 whzzt 92 92
123 penguin1017 92 14 78
125 xpptsdy 90 90
125 sjimed 90 90
127 yuma_ 87 87
127 mnbvmar 87 87
127 icecuber 87 87
130 KayacanV 85 85
130 kobae964 85 85
132 stupid_american 83 83
132 Farhod_Farmon 83 83
132 shenxy13 83 83
135 turmax 80 80
135 stal_xy23z7b8 80 80
135 CodePlatina 80 80
138 Gassa 78 78
138 znirzej 78 78
140 little_misfortune 76 76
140 Antoine 76 76
142 disangan233 72 72
143 tmwilliamlin168 70 70
143 hugopm 70 70
143 MicGor 70 70
146 A_Fan_of_the_AK_King--lk 68 68
146 upobir 68 68
148 xuanyi 66 66
148 paulica 66 66
148 Shef 66 66
151 JiriKalvoda 63 63
151 rapca 63 63
151 CN_zwang2002 63 63
151 ainta 63 63
156 nhho 62 62
156 Isonan 62 62
158 Geothermal 60 60
158 FlowerOfSorrow 60 60
160 noimi 58 58
160 wucstdio 58 48 10
160 Kostroma 58 58
163 Chelly 56 56
163 CKP_ 56 56
163 hitonanode 56 56
166 errorgorn 54 54
166 Fuyuki 54 54
166 cescmentation_folch 54 54
169 Retro3014 52 52
169 QwertyPi 52 52
171 aaaaajack 50 50
171 SSRS_ 50 50
173 RNS_MHB 48 48
173 misty1999 48 48
175 NotaMotuaQAQ 46 46
175 majk 46 46
175 tonyjjw 46 46
178 vepifanov 45 45
178 JeffreyLC 45 45
180 nick452 43 43
180 jklepec 43 43
180 Morokei 43 43
183 skip2004 41 41
183 Zayin 41 41
183 Roundgod 41 41
186 qwerty787788 39 39
186 Celesta 39 8 31
186 balbit 39 39
186 pwypeanut 39 39
186 Maripium 39 39
191 jdurie 37 37
191 Rubbish12345 37 37
193 chenjb 36 36
193 loup 36 36
195 EricHuang2003 34 34
196 nonamefour0210 32 32
196 rstoick 32 32
198 cdkrot 31 31
199 J_J_ 29 29
199 nigus 29 29
199 sjcakioi 29 29
202 AndreySergunin 27 27
203 Tweetexas 26 26
203 nagpaljatin1411 26 26
203 darnley 26 26
206 Aeon 24 24
206 gepardo 24 24
206 Bugman 24 24
209 Nachia 22 22
209 xtqqwq 22 22
209 KAP 22 22
212 yao11617 21 21
213 Apsara 19 19
213 kotatsugame 19 19
215 Ari 17 17
215 dorijanlendvaj 17 17
215 low_ 17 17
218 nikolapesic2802 16 16
219 KrK 14 14
219 Localization 14 14
221 summitwei 13 13
221 AutumnKite 13 13
221 AliShahali1382 13 13
221 receed 13 13
225 Wild_Hamster 11 11
225 Akulyat 11 11
227 saba2000 10 10
227 tnowak 10 10
229 emma 8 8
230 krijgertje 7 7
230 Tlatoani 7 7
230 Cyprien 7 7
233 vasilescu_mihai 5 5
233 osmanorhan 5 5
233 primaryStu 5 5
233 baqargam 5 5
237 amethyst0 4 4
238 user202729_ 2 2
238 daifucong 2 2
238 ekaerovets 2 2
241 SPatrik 1 1
241 Mojumbo 1 1

• +38

By MikeMirzayanov, 7 days ago, ,

Hello Codeforces!

In February, in the Russian-language interface, we announced a new educational subsection of the website. It's time to go international!

I am pleased to invite you to test the new section, which so far has the working title EDU. I hope that someday EDU will become a real educational hub for fans of programming competitions. It will be great to have in one place the collected educational content with text and video materials, with selected thematic problems.

At the moment, its functionality is still under development, and here is the current progress and β-testing preview. Write your comments and suggestions in the comments here.

Go to EDU →

So far, only a pilot course with the first lesson "Suffix Array" has been presented to your attention. The plans include expanding both the functionality of the section and filling it with new content.

Russian version already contains more lessons. At the moment, it is important for us to get the first feedback from international users. Many thanks to Pavel Mavrin (pashka) for preparing the first English lesson. Please support pashka to motivate him to translate more lessons!

I hope that in the future, using the materials in this section, you will be able to gain knowledge on an extensive set of topics that are used in contests and olympiads. According to the current plan, a group of ITMO lecturers and students will be engaged in a pilot course, a little later we will consider the possibility of opening the possibility of creating classes for a wider audience.

Thanks to ITMO University for the idea and support for the implementation of this initiative!

• +2197

By MikeMirzayanov, 5 weeks ago, ,

Hello!

Together with colleagues Schaffhausen Institute of Technology we hold such an event. If you want to study in Switzerland, then perhaps this is your chance!

— Mike

Hello, Codeforces!

We are thrilled to announce a new SIT STAR Contest by the Schaffhausen Institute of Technology in Switzerland. The winners will have a chance to get a fully-funded Master’s scholarship in Computer Science and Software Engineering.

What is the SIT STAR Contest?

The goal of the SIT STAR Contest is to promote interest in the field of Computer Science and Software Engineering, give students an opportunity to demonstrate their knowledge of programming, and be considered for a fully-funded graduate scholarship. You can apply to the contest here!

The SIT STAR Contest consists of:

1. June 1-7, 2020 | Practice: To familiarize yourself with the testing environment, you will first be granted access to a practice round. You can practice any time from 1st to 7th June 2020. This is an optional step but we highly recommend to take part in it. The results of this round won’t affect the final score.
2. June 17, 2020 | SIT STAR Contest: The final round will take place on 17th June. The participants will be given 4 hours to complete it.
3. June — July, 2020 | Interviews and Winners announcement: Top participants with the highest scores will be invited for the interviews with the professors from the Schaffhausen Institute of Technology.

The SIT STAR Contest will include 8-12 problems of various levels of difficulty in algorithmic programming.

APPLY→

• +325

By MikeMirzayanov, 5 weeks ago, ,

Hello, Codeforces!

I carefully read most of the ideas that are written in the comments and posts. I have no way to answer everything. Otherwise, I would only do what I answered. Excuse me. There are many good ideas, some easier to implement, some more difficult.

The following idea seems vivid to me. Idea is to limit the maximum rating increase for rounds where there is already an upper rating limit at registration. For example, if the upper limit is $u$, then your rating after participating in the round cannot be higher than $u+100$ even with a very successful performance. For example, after winning in Div.3 round the rating can't be more than $1699$.

It is easy to implement, it does not entail a significant redistribution of ratings. It seems I like it. What do you think about it?

Actually, probably a good idea is to make a bottom cap for rating changes: in any case of any (even the worst) performance, the rating shall not fall by more than $100$. Еverything happens during the rounds — there may be technical difficulties, force majeure, or just catastrophic bad luck. What are your thoughts about it?

— Mike

• +680

By MikeMirzayanov, 6 weeks ago, ,

Hello everyone.

In the coming days I will finish the implementation of small changes in the rating calculation for new accounts. Here are the main innovations.

• The rating of the new account will be equal to $0$ for display (but it will be equal to $1400$ when calculating rating changes).
• Suppose, after the first round, the participant gained $d_1$ rating points (remember that the rating was considered equal to $1400$ in such calculations), then in the rating display after this round $500+d_1$ will be displayed. Thus, after the first participation, the rating is likely to increase from $0$ to a value in the region of $500$ (plus or minus $300$ approximately).
• Thus, before the second participation, the displayed rating is $500+d_1$, and the rating for calculating changes is $1400+d_1$. Suppose a new change is $d_2$, then the displayed rating becomes $500+d_1+350+d_2$.
• Thus, before the third participation, the displayed rating is $500+d_1+350+d_2$, and the rating for calculating changes is $1400+d_1+d_2$. Suppose a new change is $d_3$, then the displayed rating becomes $500+d_1+350+d_2+250+d_3$.
• And so on the first $6$ rounds. Promotions of the displayed rating will be equal to $500, 350, 250, 150, 100, 50$ (in total exactly $1400$). Therefore, after participating in $6$ rounds, the rating is “stabilized” and the displayed rating will be equal to the one used to recalculate the changes.

Thus, on average, for new accounts at an early stage, the rating will increase, getting closer to the real value. These innovations will help solve several issues:

• We are reducing the starting rating from $1500$ to $1400$, so that new accounts make a smaller contribution to the overall rating.
• Currently, especially for inexperienced participants, there is an effect that their rating at the beginning of participation is constantly falling (from $1500$ to the value that is a true assessment of their skills). This, of course, leads to discomfort: you try, participate, solve some problems, but the rating drops.
• The previous paragraph gives additional motivation to create new accounts. If your current rating is less than $1500$, then there is a temptation to start from scratch with a fresh account. After the changes, such a start will require a noticeable long-term effort to climb at least your current rating. It seems that the changes should slightly reduce the motivation to create new accounts.

Apparently, a similar idea is used on AtCoder, but I don't know the details.

What do you think about such improvement? Sounds good?

• +2643

By MikeMirzayanov, history, 2 months ago, ,

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:

• 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.

• 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, Sho10, igor_kz, Sho10, 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!

• +333

By MikeMirzayanov, history, 2 months ago, ,

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.

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

• +1391

By MikeMirzayanov, 2 months ago, ,

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).

Announcement of Testing Round #16 (Unrated)

• +1625

By MikeMirzayanov, 2 months ago, ,

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.

• -65

By MikeMirzayanov, 2 months ago, ,

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.

• +2680

By MikeMirzayanov, history, 2 months ago, ,

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!

• +1874

By MikeMirzayanov, history, 3 months ago, ,

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?

• +538

By MikeMirzayanov, 4 months ago, ,

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!

• +2511

By MikeMirzayanov, 4 months ago, ,

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.

• +206

By MikeMirzayanov, 5 months ago, translation, ,

Hi Codeforces!

The platform recently turned 10 years old. We accept your congratulations at https://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

• +1154

By MikeMirzayanov, 6 months ago, ,

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!

• +505

By MikeMirzayanov, 6 months ago, ,

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!

• +2750

By MikeMirzayanov, 6 months ago, translation, ,

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?

• +468

By MikeMirzayanov, 6 months ago, ,

Do you already have a New Year's mood?

#### 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.

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!

• +748

By MikeMirzayanov, 7 months ago, translation, ,

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

Tutorial of div2 B-C #1

• +50

By MikeMirzayanov, 7 months ago, translation, ,

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, grumpy_gordon, 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