MikeMirzayanov's blog

By MikeMirzayanov, 6 years ago, In English

Hello.

As I wrote into a comment, last round we are faced with a strong DDOS-attack which ruined the competition. I don't know who did it, I also don't know reasons to do it. I'm very upset about the situation and ready to make an effort to be prepared for such issues.

I spend a lot of time to be ready for such incidents.

Here are steps you need to do to be ready for unexpected failures:

  • Join our telegram channel by the link https://t.me/codeforces_official to read urgent news.
  • Be sure that you know the password of your Codeforces account. If you don't remember it, just use the password recovery feature. Please, do it right now.
  • I've implemented a minimalistic website for replacing the main site in case of emergencies. Now you can only read problems, view your submissions (without any details), submit codes. Probably, later I'll add some more features, but anyway, the minimalistic version will have only vital features to take part in a contest. I've deployed it in several places, you can visit any of them by the links: http://m1.codeforces.com, http://m2.codeforces.com, http://m3.codeforces.com. If any of them is unavailable, just use another. Do not use them if the main website is alive.

UPD: Now you can enter minimalistic websites without a password. In this case, an email with a secret enter link will be sent to you.

Full text and comments »

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

By MikeMirzayanov, 6 years ago, In English

Hi, Codeforces!

I am glad to announce and invite you to the second launch of my course on algorithms and data structures.

On 7-25 of January, 2019, I will be giving the course "Advanced Algorithms and Data Structures" at Harbour.Space University (Barcelona, Spain). It will be in English, and is not limited to Harbour.Space students — anyone is welcome! Who wants to join?

This course isn't just for Harbour.Space students, it is also open to Codeforces participants, who will be offered a special price, 1000 EUR. The cost does not include travel or accommodation.


Register for the Course →

The curriculum will include a breakdown of algorithms and data structures, a lot of practical exercises, and emphasis not only on the correctness, but also the beauty and structure of the code. My goal is to make classes that are useful and interesting for both those who want to understand the fundamental CS, and for those interested in programming competitions. And of course, we will have the opportunity to meet and talk. I look forward to share stories about the history of Codeforces and future development plans.

The course will consist of three weeks of intensive training, 5 days in each week, 3 hours per day. The program includes daily lectures and practical exercises. It will not be boring for sure!

Here is the expected course outline:

Week Day Topics
1 1 Heap data structure, heap properties and operations. HeapSort. Priority queue. Other heap applications. Mergeable heaps: binomial heap, pairing heap, randomised meldable heap.
1 2 Fenwick tree. Description and motivation. Implementation of Fenwick tree. Generalisation for higher dimensions. Skip list data structure. Implementation details. Indexable skiplist.
1 3 Segment trees. Top-down implementation. Bottom-up implementation. Segment trees applications. Persistent data structures. Persistent stack, persistent array. Persistent Fenwick and segment trees.
1 4 Cartesian trees, treap data structure. Merge and split operations. Treap implementation in detail. Treap applications.
1 5 Treaps with implicit keys. Ropes. Segment reverse operation. Examples of problems.
2 6 Introduction to strings. String searching (matching) problem. Pattern pre processings. Z-function, prefix-function. Their applications. Knuth–Morris–Pratt algorithm. Matching finite state machine.
2 7 Multiple pattern matching. Trie data structure. Aho-Corasick algorithm. Implementation details. Dynamic programming on a trie.
2 8 String hashing. Rabin-Karp algorithm. Fast substrings comparison with hashes. Suffix array. LCP array. Efficient construction algorithm. Applications.
2 9 Suffix tree. Ukkonen's algorithm. Suffix tree construction from LCP array. Suffix tree applications.
2 10 Suffix automaton. Size bounds. Linear Algorithm. Using suffix automata as an index for approximate string searches.
3 11 Introduction to automata theory. Formal languages. Context-free languages. Formal grammars. Context-free grammars. NFA, DFA, convert NFA to DFA. Build automaton by regular expression.
3 12 LL(1) parser. Arithmetic expressions parsing. Shunting-yard algorithm. Simplified Pascal language parsing and interpretation.
3 13 Algorithms for traversing a graph. DFS. Properties. DFS search tree. Edges classification. Linear bridge-finding algorithm. Linear articulation points finding algorithm. Strongly connected components. Tarjan's strongly connected components algorithm.
3 14 Tree problems. Bottom-up approach. LCA problem. LCA algorithms.
3 15 Bipartite graphs. König’s criterion. Problems: maximum matching, minimum edge cover, maximum independent vertex set, minimum vertex cover. Connection of the problems. Berge's lemma. Kuhn algorithm. Kuhn algorithm properties. Minimal vertex cover by maximum matching. Cover DAG by minimal number of paths.

Harbor.Space University is located in Barcelona (Spain). For users of Codeforces, Harbour.Space is known for active participation in the life of the community of sports programming (partnership with Codeforces in the framework of Educational Rounds). The main activity of the university is teaching (there are bachelor's and master's programs) in the following areas:

  • Maths as a Second Language
  • Computer Science
  • Data Science
  • Cyber Security
  • Interaction Design
  • Digital Marketing
  • High Tech Entrepreneurship
  • FinTech
  • BioTech
  • Aerospace Engineering
  • SuperCities UrbanTech

Harbour.Space is also proud to announce the Scholarships to study Msc in Robotics in Barcelona. Follow this link for more information about the opportunity and application process.

Register for my upcoming course via this link.

MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 6 years ago, In English

Here are merged results of Mail.Ru Cup 2018 Раунд 1 and Mail.Ru Cup 2018 Раунд 2 according to the GP100 scores (see the announcement for the details https://codeforces.net/blog/entry/62355).

Place Contestant = Round 1 Round 2
1 mnbvmar 1497 1000 497
2 aid 1204 204 1000
3 LHiC 1203 497 706
4 V--o_o--V 1150 575 575
5 Um_nik 997 706 291
6 SpyCheese 742 371 371
7 scott_wu 614 307 307
8 budalnik 531 277 254
9 tourist 443 443
9 Lewin 443 443
11 Golovanov399 403 403
11 Endagorion 403 403
13 jcvb 384 198 186
14 Errichto 382 36 346
15 uwi 364 153 211
16 dreamoon_love_AA 355 265 90
17 dotorya 346 346
18 jqdai0815 325 325
18 Petr 325 325
20 SYury 313 78 235
21 Reyna 298 244 54
22 ksun48 291 291
23 kmjp 288 70 218
24 isaf27 277 277
25 Radewoosh 265 265
26 Kostroma 264 218 46
27 zemen 258 226 32
28 irkstepanov 254 254
29 al13n 248 186 62
30 qwerty787788 244 244
31 Zhukov_Dmitry 235 235
32 gamegame 229 192 37
33 voover 227 56 171
34 sevenkplus 226 226
35 Xellos 225 72 153
36 eatmore 218 138 80
37 ezLadder 213 145 68
38 ainta 211 211
39 I_love_Tanya_Romanova 204 204
40 BigBag 198 198
41 RAVEman 195 19 176
42 JustasK 192 192
43 saketh 181 181
43 krijgertje 181 181
45 maroonrk 176 176
46 molamola. 171 171
47 AndreySergunin 166 166
47 Shef 166 166
49 mHuman 163 21 142
50 imeimi 161 161
50 Aeon 161 161
52 Alex_2oo8 157 157
52 wxy_z 157 157
54 JiK 154 128 26
55 yashChandnani 152 92 60
56 snuke 149 149
56 function348 149 149
58 amethyst0 148 135 13
59 receed 145 145
60 Nikitosh 142 142
61 Marcin_smu 138 138
62 Mediocrity 135 135
63 Merkurev 131 131
63 anta.baka 131 131
65 kektus 128 128
66 majk 125 125
66 atacan 125 125
68 kpw29 122 122
68 znirzej 122 122
68 WA_TLE 122 122
71 queria_ser_abella 119 119
72 cookiedoth 117 107 10
73 zscoder 116 116
73 never_giveup 116 116
75 bbatti93 114 22 92
76 Fdg 113 113
76 boook 113 113
78 liujunhao 110 110
78 mjhun 110 110
80 fgcos 107 107
81 pparys 105 105
81 ShadowLight 105 105
83 KrK 102 102
83 orz 102 102
85 sy_chen 99 99
85 rtilikay 99 99
87 KMAASZRAA 97 97
87 hank55663 97 97
89 998kover 94 94
89 TLEwpdus 94 94
91 kaldiuo 90 90
92 rui-de 87 87
92 palayutm 87 87
94 dario2994 85 85
94 cephian 85 85
96 I_love_tigersugar 84 34 50
97 lezdzh 83 83
97 ThePilgrim 83 83
99 kimden 80 80
100 adedalic 78 78
101 papa3 76 76
101 Coder 76 76
103 hloya_ygrt 74 74
103 agutowski 74 74
105 ---------- 72 72
105 tribute_to_Ukraine_2022 72 72
107 maximumSHOT 70 70
108 IndianICPC-Joke. 66 66
108 kefaa 66 27 39
108 NurlashKO 66 66
111 Subconscious 63 63
111 nanachi 63 63
111 gop2024 63 52 11
114 ismagilov.code 62 62
115 riadwaw 60 60
116 Noam527 58 58
116 nhho 58 58
118 fsouza 56 56
119 alex9801 54 54
120 Sert 52 52
120 mariand 52 52
122 natsugiri 48 48
122 mango_lassi 48 48
122 archie_fake 48 48
125 Wild_Hamster 45 45
125 kostka 45 45
127 Anadi 43 43
127 saba2000 43 43
129 Motarack 41 41
129 Farhod 41 41
131 Alexandr_TS 39 39
132 wa1tz719 37 37
133 Egor 36 36
134 zeliboba 34 34
135 f.bialas 32 32
136 .ckodser. 31 31
136 nigus 31 31
138 kyleliu 29 29
138 radoslav11 29 29
140 mateusz 27 27
141 -is-this-fft- 26 26
141 NBAH 26 26
143 icecuber 24 24
144 chemthan 22 22
145 kalinov 21 21
146 kr_abhinav 19 19
147 Lollipop 17 17
147 a.piasta 17 17
149 mmaxio 16 16
149 sava-cska 16 16
151 Weeeee 14 14
151 Quang 14 14
153 sqrtdecompton 13 13
154 test616.cpp 11 11
155 shoemakerjo 10 10
156 tamionv 8 8
156 guille 8 8
158 spiderg 7 7
158 kalimm 7 7
160 glebushka98 5 5
160 AlexLuchianov 5 5
160 teleport 5 5
163 PoDuReM 4 4
164 Holidin 2 2
164 Dmitriy.Belichenko 2 2
166 Diego 1 1
166 _LeMur_ 1 1

Full text and comments »

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

By MikeMirzayanov, 6 years ago, translation, In English

Hi Codeforces.

I am glad to share a small but useful update of Polygon, which was fully developed by me in the walls of ITMO. Now preparing problems with unusual I/O will become a little easier.

Now in the new problems you will get examples in the statements without any transformations by LaTeX/HTML. If earlier you had difficulties with the correct formatting of empty lines or the fact that a double hyphen is replaced with a dash, now there are no such difficulties. The enhancement works for both PDF and HTML statements.

For example, to have such I/O examples just add such a test and use the appropriate output from the model solution.

Note that the feature to overwrite the examples is stayed working (custom content of input or output data for statements). It seems that there are almost no reasons to use it for an input now (apparently, only for interactive problems).

Previously created problems use the old approach, so this innovation should not break existing problems.

How do you like the feature?

Full text and comments »

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

By MikeMirzayanov, 6 years ago, translation, In English

Hi Codeforces!

Meet a small innovation on Codeforces — difficulties of problems (and at the same time a new widget filtering problems in the archive). For all the problems of the archive, I’ve calculated the difficulties in the scale of the rating of participants. Approximately this means that if the rating of the problem is equal to yours, then on a typical round you would solve the problem with a probability of 0.5. And, in general, if your rating is ri, and the problem rating is rj, then the problem during the round can be solved approximately with probability:

For example, if the rating of a problem is less than yours by 200, then the expected probability of solving the problem is 0.75. With a difference of 400 rating points, the probability increases to 0.9.

For convenient search of problems in the archive, you can now use a special widget:

With it, you can find not only problems that have all the chosen tags, but also which have at least one tag from the list.

A difficulty of a problem is also displayed when choosing problems in a mashup.

I hope that now you will be able to do more effective practice, and the process of making new mashups for trainings will become easier.

UPD 1: Have you already noticed new pop-ups about judgment verdicts of your submissions?

UPD 2: (API update) Optional field rating has been added to the object Problem in API.

Full text and comments »

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

By MikeMirzayanov, 6 years ago, translation, In English

Hello!

ACM-ICPC Southern Subregional Contest (NEERC/Northern Eurasia) 2018 has ended on October 16. There were 72 teams onsite in Saratov, most of them were invited because of their result on the qualification stage.

On Oct/20/2018 11:05 (Moscow time) will start online-mirror 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-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 ACM-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
  • +221
  • Vote: I do not like it

By MikeMirzayanov, 6 years ago, translation, In English

Hi Codeforces!

For you, perhaps it was yet another Codeforces round. But not for me. Codeforces Round 515 (Div. 3) is the first round tested on new judging servers at ITMO University. And this is not just an update of location. Ta-dam! Now your solutions will be judged on the new Intel i3-8100 processors. And this is not all news. The number of judging servers has increased, which means fewer queues during rounds!

I am pleased to announce that now I live in St. Petersburg, I work at ITMO, and Codeforces is gradually moving from the walls of dear to me Saratov University to ITMO University. The decision to move was not easy for me. My plan is that, based on ITMO, I can focus more on Codeforces development and work on the platform. The number of world champions per square meter is simply overwhelming, and working with a large team of such enthusiasts (and professionals!) of sports programming, like me, is extremely inspiring. I always liked St. Petersburg and the atmosphere of ITMO. Intuition did not let me down. I feel surrounded by people close to me in spirit (and I’m not only talking about a work). I am sure there are many interesting common projects ahead!

I do not say goodbye to Saratov. This is my hometown, full of people dear to me. I came to my first programming training at SSU exactly 20 years ago. Antonina Fedorova, thank you very much. Natalya Andreeve, I would like to say a personal thank you now. You have opened for me an interesting world of programming competitions. We were happy together when we first advanced to the ICPC Finals, and later when we became champions of Russia and the World. We made countless competitions and helped many Saratov students find themselves in programming. I fervently support the future of the Programming Competitions Training Center at SSU and future generations of Saratov contest participants. And now, I am in Saratov and still the head of the jury of the ICPC Subregional Contest, and even an SSU employee. I hope that we will make a good and interesting contest.

I will try to make a complete relocation of the Codeforces infrastructure to ITMO without downtimes. A good Internet connection between SSU and ITMO is encouraging. All the planned work will adapt to the schedule of the rounds, and now it pleases more than ever (I send my greetings to the coordinators!).

Currently, all Codeforces and Polygon solutions are being judged on new servers based on Intel i3-8100 processors. Fortunately, the performance of a single core is not very different from the one that the old generation of judging servers had. Thus, the time limits in all problems remain the same.

Such news. I am waiting for you on Codeforces Round #516 (by Moscow Team Olympiad).

MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 6 years ago, In English

My friends from Harbour.Space and Remy Robotics asked to publish the news. I am excited and glad to do it, because for our community this is a true exclusive offer. In short, they offer to study robotics in Barcelona, paying for your studies and even with a scholarship! It's so cool!

Here is a direct speech from Harbour.Space.

=

Hi Codeforces!

We are excited to announce our new Master’s in Robotics programme scholarship, which will be paired alongside an internship with our partner Remy Robotics! The programme will begin on January 7th, 2019, at our university in Barcelona, Spain.

Harbour.Space’s Robotics programme is the bridge between a personal interest in the world of Robotics, Artificial Intelligence, and a top-level professional future in one of the most exciting and fastest growing fields of technology. Students who enter the programme will either graduate as Control Engineers (theoretical specialists who ensure that robots interact with the environment in safe and effective manner), or CV Engineers (industrial manufacturers of robots, based more on practical experience).

Students will learn the Design and Control for Dexterous Manipulation; Kinematics, Dynamics and Control; Advanced Manipulation Algorithms robots use to physically interact with their world; Dynamic Optimisation for behavioral control; Integrated Intelligence in Robotics: Vision, Language, and Planning which builds upon the cognitive development; Mechanics of Manipulation focusing on using intelligent development of kinematic constraint, gravity, and friction; Manipulation, Estimation, and Control allowing for robots to locomote and navigate the world; Reinforcement learning in Robotics.

SCHOLARSHIP VALUE: €34,900

Apply →

The scholarship includes:

  • Complete coverage of the University tuition fee (€22,900)

  • Living allowance (€1,000 per month during 1 year)

  • Internship at Remy Robotics (20h per week during 1 year)

REQUIRED EDUCATION:

Bachelor's or Master's Degree in Robotics or Computer, Electrical, Mechanical Engineering or related disciplines.

QUALIFICATIONS AND SKILLS:

  • Hands-on robotic programming
  • Ideally experience within the automotive manufacturing sector
  • Knowledge understanding of robot control interface with ancillary equipment
  • Use of robot simulation packages
  • Deep experience with all things robotic, from infrastructure-free autonomy to ROS, computer vision, and machine learning
  • Experience working with robot parts and components, developing robotics devices
  • Ability to concurrently manage multiple diverse and often complex issues and / or projects at the nexus of software, sensors, and hardware

To be selected for this programme, you will need to go through the following steps:

  1. Fill out the given form by the link: https://codeforces.net/userForm/89f420923cb55373
  2. Attend a series of online tests and interviews with our admissions office and partners
  3. Pack your bags for Barcelona!

Full text and comments »

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

By MikeMirzayanov, 6 years ago, In English
Tutorial is loading...

Problem idea: MikeMirzayanov, awoo; prepared by: vovuh.

Tutorial is loading...

Problem idea: MikeMirzayanov, prepared by: MikeMirzayanov.

Tutorial is loading...

Problem idea: MikeMirzayanov, prepared by: awoo.

Tutorial is loading...

Problem idea: vovuh, MikeMirzayanov; prepared by: awoo.

Tutorial is loading...

Problem idea: Errichto, prepared by: Errichto.

Tutorial is loading...

Problem idea: Lewin, prepared by: Lewin.

Tutorial is loading...

Problem idea: Endagorion, prepared by: Endagorion.

Full text and comments »

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

By MikeMirzayanov, 6 years ago, In English

Hello, friends!

I want to discuss separately the negative feedback on the round 505.

I understand, that many participants are disappointed by solutions, which failed on system tests. In fact, the pretests in problems B, D and E turned out to be weak. The problem C also didn’t gone too smoothly, but I don’t see nothing critical.

Surely, this was a flaw in a work of author and coordinator. Unfortunately, such situations sometimes arise and it is difficult to avoid them at all. For these problems, the number of pretests and their type was not looking too weak.

Problem B: 9 pretests, there are small and large answers, two tests with answer -1, there are pretests with n = 1 and n = 2, there are four pretests with n = 150000.

Problem D: 14 pretests, among them manual tests and four different generators, few pretests with n = 700, majority of answers is ‘Yes’, but there are ‘No’ as well. In my opinion, too little pretests with ‘No’.

Problem E: 14 pretests. Yes, this problem on VK cup finals contained 10 pretests and caused many systests fails for participants. I have added 4 more tests to pretests from tests, which caused system tests fails for onsite participants. I was very surprised to see, that there were still so many fails after systests.

Summing up, the pretests turned out to be incomplete, but it is hard to say, that it was obvious defect by author or coordinator. Probably it is a combined effect from the problem specifics and the lack of experience of cdkrot as a coordinator.

I haven’t examined all the problems thoroughly, but still round seemed interesting to me. There were no serious fails with statements, bugs in tests and solutions. The system was also working smoothly, without large queue.

Please explain your negative feedback about the round. It will be very valuable to read a reasoned opinion from experienced participants.

Thanks, MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 6 years ago, translation, In English

Hello!

I am happy to sum up the results of the draw of prizes in two rounds. Congratulations to the top-10 with the win of a plush Peach!

Total Place Handle Place in 504 Place in 505 Total Score (GP-30)
1 Benq 3 4 110
2 TLE 2 8 107
3-4 Swistakk 1 100
3-4 ko_osaga 1 100
5 Egor 4 9 79
6 DearMargaret 2 75
7-8 Kostroma 3 60
7-8 ksun48 6 13 60
9-10 AwD 5 45
9-10 natsugiri 5 45
11-12 gepardo 11 15 40
11-12 xumingkuan 6 40
13-14 RomaWhite 7 36
13-14 webmaster 7 36
15 Deemo 8 32
16 matthew99 9 29
17-18 kriii 10 26
17-18 yosupo 10 26
19 scott_wu 11 24
20 cz_xuyixuan 18 21 23
21-22 Marcin_smu 12 22
21-22 majk 12 22
23-24 samjia2000 13 20
23-24 sunset 16 26 20
25-26 neal 14 18
25-26 yutaka1999 14 18
27 Radewoosh 15 16
28 pavel.savchenkov 16 15
29-30 Batman 17 14
29-30 fateice 17 14
31-32 000000 27 22 13
31-32 kmjp 18 13
33-34 AndreySergunin 19 12
33-34 Arturgo 19 12
35-36 consecutivelimit 20 11
35-36 mareksom 20 11
37 never_giveup 21 10
38 gisp_zjz 22 9
39-40 __Rolton__ 23 8
39-40 Dmitriy.Belichenko 23 8
41-42 ditoly 24 7
41-42 krismaz 24 7
43-44 jvjhfhg 25 6
43-44 yanQval 25 6
45 M.Mahdi 26 5
46 yfzcsc 27 4
47-48 DEGwer 28 3
47-48 wzporz 28 3
49-50 Alex_2oo8 29 2
49-50 nocriz 29 2
51-52 Ilya_MSU 30 1
52-52 MrDindows 30 1

Full text and comments »

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

By MikeMirzayanov, 6 years ago, translation, In English

Hello, Codeforces.

This is a short blog to introduce you recent updates in Testlib and Polygon.

Testlib

Generate a Permutation

Now, you can easily generate a permutation with codes like this:

Code Result
vector<int> p = rnd.perm(n); Generates 0-indexed permutation of size n
vector<int> p = rnd.perm(n, 1); Generates 1-indexed permutation of size n

Function println

Now, you can easily print space-separated lines in a generator. A println uses cout, thus prefer faster method if you print huge data.

Some examples:

Code Result
println(5); Print 5 and line break
println(1, 2, 3); Print 1 2 3 (three space separated integers) and line break
println("one", "more", 5.5); Print one more 5.5 (three space separated items) and line break
vector<int> a; ...; println(a); Print vector a (separate elements with spaces) and line break
vector<int> a; ...; println(a.begin(), a.end()); Exactly the same as above
string b[5]; ...; println(b, b + 5); Print array b (separate elements with spaces) and line break

Here is the example of a generator to print a permutation:

#include "testlib.h"

using namespace std;

int main(int argc, char* argv[]) {
    registerGen(argc, argv, 1);
    
    int n = atoi(argv[1]);
    println(n);
    println(rnd.perm(n, 1));
}

Function readInts and similar

Just as a reminder. Use functions readInts/readLongs/readStrictDoubles or readTokens/readLines in a validator to read and validate a sequence of values. To read a size of an array and array itself, use:

int n = inf.readInt(1, 200000, "n");
inf.readEoln();
inf.readInts(n, 1, 1000000, "a");
inf.readEoln();
inf.readEof();

Polygon

Example Problems

I've introduced three example problems. Each Polygon user has READ-access to them. Please, use them as examples how to write a problem in Polygon. They are:

  • example-a-plus-b: simple A+B problem
  • example-almost-upper-bound: simple problem to illustrate non-standard checker (always consider to use readAnswer function like in the example), generators and stress tests
  • example-interactive-binary-search: simple interactive problem on a binary search

Other Small Fixes

  • Allow to upload files (for example, images) as a contest property/file to use them in the statements.ftl. File names should start with 'statements-'.
  • API has been improved to support general description, general tutorial, tags, test groups and points.
  • Show problem ID on the summary box (on the righmost top block).
  • Replace UTF-8 typographic characters to their ASCII equivalent (for example, replace em dash — with ---).
  • Caching issue has been fixed. Previously, it could show RJ on tests even if the reason has been fixed.

Thanks to fcspartakm for implementing most features in Polygon.

Full text and comments »

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

By MikeMirzayanov, 6 years ago, translation, In English

Hello, Codeforces!

As many of you I'm not really satisfied how the round 497 has ran. KAN is not working on Codeforces this month, he is out of the city. It was a first round coordinated by arsijo. I liked his enthusiasm and work he did. But it happened, it wasn't an example of a well-prepared round.

The main issues are as follows:

  • The problem statement in the problem A wasn't clear enough (actually, it didn't contain any mistakes, just wasn't easy to understand).
  • The improper example to illustrate the problem B (no mistake here, but it has confused some users).
  • I really didn't like the statement of the problem D2D/D1B. I agree it wasn't good. Again it didn't contain any mistakes, but it was hard to understand it quickly. Also I did the incorrect announcement (but it was fixed quickly).
  • The incorrect behavior of the interactor in the problem D2E/D1C (Time Limit Exceeded/Idleness Limit Exceeded on too many queries instead of Wrong Answer).
  • The huge gap in the difficulty between the D2C and the D2D.

Right now, I'm really do not sure, should the round be a rated or not. What is your opinion about it? The current idea of the writers and the coordinator to make it unrated for whose, who got incorrect verdict on D2E/D1C.

Anyway, I'd like to say “thanks” to the problem writers, testers and the coordinator arsijo. They really tried to make a good round. I hope to see more rounds from Skyglow and coordinated by arsijo. I'm sure they made proper conclusions from the round.

Thanks, MikeMirzayanov

UPD: Thank you for sharing your opinion. The round is rated.

Full text and comments »

Tags 497
  • Vote: I like it
  • +270
  • Vote: I do not like it

By MikeMirzayanov, 6 years ago, translation, In English
Tutorial is loading...
Code in C++ for details
Tutorial is loading...
Code in C++ for details
Tutorial is loading...
Code in C++ for details
Tutorial is loading...
Code in C++ for details
Tutorial is loading...
Code in C++ for details
Tutorial is loading...
Code in C++ for details
Tutorial is loading...
Code in C++ for details

Full text and comments »

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

By MikeMirzayanov, 6 years ago, In English

Hello!

This time decided to fill myself in the shoes of the problem writers. It is very exciting! My challenge was to prepare a round in one day. It's really incredible pleasure to surrender to my passion and all day just work on problems!

Despite the fact that in total I've wrote 8 problems, I made it in time. Initially, I prepared 7 problems, but two of them were found to be used before (thank you, 300iq and cdkrot for poining it) and I removed them and wrote a new problem.

Codeforces Round 496 (Div. 3) will start on Jul/09/2018 18:35 (Moscow time). You will be offered 6 problems with expected difficulties to compose an interesting competition for participants with ratings up to 1600. Probably, participants from the Div. 1 not be at all interested by this problems. And for 1600-1899 the problems will be quite easy. However, all of you who wish to take part and have rating 1600 or higher, can register for the round unofficially.

The round will be hosted by rules of educational rounds (extended ACM-ICPC). Thus, during the round, solutions will be judged on preliminary tests, and after the round it will be a 12-hour phase of open hacks. I tried to make strong tests — just like you will be upset if many solutions fail after the contest is over.

You will be given 6 problems and 2 hours to solve them.

Remember that only the trusted participants of the third division will be included in the official standings table. As it is written by link, this is a compulsory measure for combating unsporting behavior. To qualify as a trusted participants of the third 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 1900 or higher in the rating.

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.

Many thanks to the testers: kevinsogo, 300iq, cdkrot, arsijo and adedalic. You really helped to make this round!

Good luck!

UPD 1: The round is over. Thank you for participation!

Official Top-5 (trusted only)

Unofficial Top-5 (+ untrusted)

UPD 2: The editorial is available by the link.

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello, Codeforces!

I offer you also to join testing of HTTPS support. Just visit to https://codeforces.net/ and start to use the website through HTTPS.

I am aware of some minor issues: mails still refer to the HTTP version of the website, Facebook does not merge likes for HTTP and HTTPS. Have you noticed anything else? Write a comment!

And thanks to Let's Encrypt for the certificates. Now with wildcards!

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello!

Codeforces Round 481 (Div. 3) will start on May/13/2018 12:05 (Moscow time). It will be the second Div.3 round in the history of Codeforces. You will be offered 7 problems with expected difficulties to compose an interesting competition for participants with ratings up to 1600. Probably, participants from the first division will not be at all interested by this problems. And for 1600-1899 the problems will be too easy. However, all of you who wish to take part and have rating 1600 or higher, can register for the round unofficially.

The round will be hosted by rules of educational rounds (extended ACM-ICPC). Thus, during the round, solutions will be judged on preliminary tests, and after the round it will be a 12-hour phase of open hacks.

Remember that only the trusted participants of the third division will be included in the official standings table. As it is written by link, this is a compulsory measure for combating unsporting behavior. To qualify as a trusted participants of the third 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 1900 or higher in the rating.

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.

The problem are written by me and fcspartakm. Many thanks to testers AGrigorii, BigBag, nhho and Sert!

Good luck!

UPD 1: Thank you for participation. Problem tutorials have been published.

UPD 2: Congratulations to the winners! Top-5 (official standings):

Full text and comments »

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

By MikeMirzayanov, 7 years ago, In English

Hello, Codeforces!

Recently I've started to receive a lot of messages with the ask to delete an account. I'm thinking how to implement this feature. What content should be hidden after it: posts? comments? solutions? How it implemented in Facebook and other social networks? Are there any generally accepted norms about account deletion?

Waiting for you ideas in comments.

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello, Codeforces!

It's time for news. I hope you will enjoy!

  • We reduce the rating bound for the orange color. Thus, now the orange rating (and the Master title) will start from 2100 rating units.

  • The lower bound of the rating for legendary grandmasters is increased to 3000 rating units. Thus, right now in the community, 14 participants meet this requirement. Real legends!

  • For rounds like "Div. 2 Only" the upper bound of the rating for official participation is increased. Now everyone whose rating is less than 2100 (i.e., before masters) will be able to register for such rounds to participate officially, their rating will be updated based on the results of the round. We do not plan to increase the complexity of Div. 2 rounds. Practice shows that the problems of such rounds are interesting and useful for participants "below the orange".

  • For parallel Div. 1 and Div. 2 rounds we don’t change the rating bound between divisions. So Div. 1 edition of the round continue to include participants with the rating from 1900 and above.

  • As an experiment, we plan to host rounds of simplified complexity (Div. 3). In such rounds, the official results will include participants with ratings less than 1600. We plan to include in these rounds simple training problems that will help beginner participants to gain skills and to get new knowledge in a real contest. Since even in the Div. 2 rounds regularly some Div. 1 users register new account and take high place, we also expect such unsportsmanlike behavior in the Div. 3 rounds. We will exclude from the official standings of Div. 3 rounds and put in a separate rooms all those who can’t be reliably called to be a real participant. Accounts that materially participated in less than 2 rating rounds (materially means solved at least one problem there) before the start of the Div. 3 rounds, and those who have ever gained 1900 or more rating units will not get into the official standings and will be assigned to separate rooms. However, this does not mean that there is no rating recalculation for them. Thus, the rating will be updated for all users whose rating is strictly less than 1600 at the time of the start of a round. Perhaps we will experiment with the definition of who should be considered a reliable Div. 3 participant. And thanks to VLamarca for the post about idea of Div.3 rounds!

Updating the boundaries of ratings and changing colors is not an instantaneous process. For this reason, the website may still have outdated information for some time. We are working to apply the announced changes during the day.

I hope you enjoy this news.
MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello!

This blog post is about the end of the crowdfunding campaign dedicated to the 8th anniversary of Codeforces. Everything worked out. Hooray!

For us, it is very important to support not only in terms of the collected budget, but as a powerful indicator that Codeforces is important to you. It was very pleasant to read words of gratitude and congratulations. Thank you!

We received more than 1000 donations from community members from around the world. For 45 days we've collected more than $60000 dollars. The collected funds will allow us to continue to move forward, to please you with new contests and improvements of the system.

I am happy to report that starting in May 2018, we will be able to slightly increase rewards for problem writers.

Round type USD Rubles
Div 1 + Div 2 $250+*$150=$400 26000 rub
Div 2 $125+*$75=$200 13000 rub

We tie the money paid in rubles to the Central Bank of Russia exchange rate, rounded to the closest sum in rubles divisible by 5 (according to the rules of mathematical rounding). The table shows the values that were up-to-date when this post was published. An asterisk marks the bonus that is given if the round is prepared in time and without major issues in problems.

In addition, the collected funds will help to increase a reward of the problem coordinators KAN and [user:gritikan]! Guys, you're doing a very important job, thank you for that!

Improvement of Codeforces hardware has already been launched, which will help improve the stability of the system and keep up with the growth of the audience.

To all those of you who are expecting a gift from us (certificate, T-shirt, hoodie), I remind that it is necessary to fill in or update the information in the profile about the delivery address. Please do not delay this!

Thank you again for your support!

MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

April 19, 15:35 (UTC) the VK Cup 2018 - Wild-card Round 2 will start.

Participants are invited to achieve progress in solving an unusual problem. VK Cup teams which were advanced to the Round 2 (and didn't advance to the Round 3) will take part in VK Cup 2018 - Wild-card Round 2 officially. In addition, this round will be open to the public for unofficial participation for everybody. Registration will be open for the whole round duration.

The round will be one week long. After the end latest submission (with positive score) of each participant will be judged on system tests.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello Codeforces!

On April 10, 14:35 UTC Educational Codeforces Round 42 will start.

Series of Educational Rounds continue being held as Harbour.Space University initiative! You can read the details about the cooperation between Harbour.Space University and Codeforces in the blog post.

This round will be rated for Div. 2. It will be held on extented ACM ICPC rules. After the end of the contest you will have one day to hack any solution you want. You will have access to copy any solution and test it locally.

You will be given 7 problems and 2 hours to solve them.

The problems were prepared by me and Alex fcspartakm Frolov.

We'd like to thank Nikolay KAN Kalinin, Grigory vintage_Vlad_Makeev Reznikov, Vladimir vovuh Petrov for the testing and help in preparing the round.

Good luck to all participants!

UPD: Some information from Harbour.Space U

The third Hello Programming Bootcamp finished as teams from around the world learned, competed, and got to know each other in the cities of Kollam and Moscow.

“I'm positively surprised with the level and number of Indian teams. I believe when following a systematic and regular training schedule — they will certainly attend top world records in programming” says Mike MikeMirzayanov Mirzayanov.

The results of the India boot camp are as follows:

We would like to congratulate the top teams from the India side in both divisions A and B — and especially recognise division A’s winner: Team SDV — Vasily platypus179 Alferov, Vaibhav gvaibhav21 Gosain, Motasem Motarack AL-Kayed sponsored by Social Discovery Ventures, and winners of the Educational Codeforces Round 39.

The division A winners are: Team SDV (platypus179, gvaibhav21, Motarack), TheVindicators (IIIT Kharagpur) (pranjal.ssh, Chenghiz), DomiNUS (NU of Singapore) (vodanhna, darknsux, minh141198).

The division B winners are: BEU Programmers (Baku Engineering University) (mahmud2690, Mamedov, fuck_coderinuse), Penza State University (Fortin, WooDeND, Key_J) and Sab_lite_hai (IIT(BHU),Varanasi) (Enigma27, Dsingh_24, nitishk24).

All results from India side
All results from Russia side

From the ever present in ACM World Finals city of Moscow, to the new-comer on the world stage city of Kollam — Hello India x Russia Programming Bootcamp showcased heart, passion, and a universal drive towards a better competition.

“It's the first time I participate at Hello ACM-ICPC Bootcamp in Asia and I admire local hospitality and students motivation. Everyone seems to be eager to learn, participants stay very late upsolving the contest problems and revising the topics they were thought during the day” states Gleb GlebsHP Evstropov, The Coordinator of the Programming Committee.

The latest in world finals simulation training would not be possible without the bronze sponsorship of VTB, the institute with the most extensive international network of any Russian bank, boasting more than 30 banks and financial companies in more than 20 countries.

Fill out this form and we will keep you up to date on our next boot camp!

UPD: Tutorial

Full text and comments »

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