MikeMirzayanov's blog

By MikeMirzayanov, 7 years ago, translation, In English

Hello!

As an allowed language on Codeforces and Polygon C++17 has been added. The compiler we use is 32-bit mingw64 version 7.2.0 (later will be updated when new versions are released). We are using a patch from halyavin to speed up I/O when using scanf/printf (for more details, read here). The exact used distribution can be installed on Windows from our package manager called PBOX using the link http://pbox.me/packages/mingw-w64-7

The exact compilation command line is:

g++.exe -static -DONLINE_JUDGE -Wl,--stack=268435456 -O2 -std=c++17 -o %name%.exe %1 2>compilation.log

Wish you successful solutions in C++17,
MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, history, 7 years ago, In English

Hi!

After the Educational Codeforces Round 35 (Rated for Div. 2) the system marked some solutions as plagiarism by mistake. It counts submitted twice solutions of the same participant as a plagiarism. Sorry about it. Day ago I rolled back punishment and judged such submissions as normal. Now I'm fixing the ratings. In 2-3 hours some rating changes will be reverted and applied back. The same with NY magic. Temporarily magic is unavailable now. It will be back soon!

The changes will affect ~10 people.

MikeMirzayanov

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Happy New Year, Codeforces!

I hasten to wish the whole community (and including me) correct programs, sudden insights, beautiful ideas and interesting problems!

I hope that you have met the new year at least as fun as I am. Have you had enough sleep after New Year's Eve? This year, the traditional post summarizing the past year, I sat down to write only on January 1, 2018. I hope that I will not have to sum up the whole year.

This post is important to me, since it draws a line to all the work done by the Codeforces team and the entire community in 2017. Many thanks to the team: all of the achievements listed below are the result of joint efforts. We did an excellent job! The community must know its heroes. In 2017, MikeMirzayanov, KAN (problem coordinator), vintage_Vlad_Makeev (second problem coordinator), netman (ex-second problem coordinator), kuviman (developer), fcspartakm (developer), SladeThe (developer) and gKseni (manager). Great contributions were provided by the students of the Saratov University: BledDest, awoo, vovuh, and Perforator — educational rounds, trainings in Codeforces::Gym and help in the development. I radiate the rays of gratitude to problem writers and testers: you create interesting content for many thousands of programmers from all over the world. Many thanks to all those who helped with the special projects, wrote interesting posts and good comments. All together, we were able to make Codeforces better!

So, let's move on to the results. It seems to me, this year again has something to brag about.

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, 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 old handle would automatically redirect to the actual profile.

This year we have an improvement. If you took part in at least 10 rounds you can request handle of an inactive participant. It means that the participant should have a period of activity on Codeforces of at most 30 days, this period should be in 2012 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. If you can’t change handle to others, 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

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

Full text and comments »

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

By MikeMirzayanov, history, 7 years ago, translation, In English

Hello, Codeforces!

I want to test the system before the rated rounds based on Technocup stage, to be sure that everything works as expected.

I invite you to take part in Testing Round 14 (Unrated). It will start soon, on December, 22, 11:05:00 (UTC). It will be unofficial unrated round. The duration is 90 minutes.

Pretests are unusually weak to trigger more hack.

Thank you,
MikeMirzayanov

UPD: Thank you for participation. I didn't notice any bugs. It seems we are ready for new rounds!

Full text and comments »

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

By MikeMirzayanov, history, 7 years ago, translation, In English

Hi, Codeforces!

This is not an ordinary post from me. This is not an announcement of new features or a championship, but I'm no less enthusiastic.

I am glad to inform you that from January 29 to February 16, 2018 I will be giving the course "Advanced Algorithms and Data Structures" in Harbour.Space University (Barcelona, Spain). The course will be in English. The students of this course will not only be students of Harbour.Space, but is open to all! 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 →

In my plans there is a detailed story about some 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 useful and interesting classes 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'm happy to share stories about the history of Codeforces and development plans.

The course will consist of three weeks of training, 5 training days in each week. 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

Register for my upcoming course here.

Mike Mirzayanov

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello!

I am pleased to report that two rounds of Codeforces have gone quite well in terms of the work of Codeforces, I am very glad about it. These days nights I spent in a profiler, fixing the code, researching the settings of MariaDB.

In addition, I managed to allocate several hours on Sunday (to be honest, until Monday morning) to finish the long-planned innovation.

Meet, diagnostics of solutions in C++!

Many Codeforces visitors are already tired of the questions of less experienced participants: "Why does my solution not work on some test on the Codeforces servers, if I locally launch it and it works correctly? You have the wrong compiler/servers!" In 99% of cases this is an example of undefined behavior in a program. In other words, the program contains mistakes that, due to a number of circumstances, are not reproduced at local launch, but are reproduced at launch on the Codeforces servers.

Sometimes, it's not easy to notice such a mistake. A small overflow of the array can lead to an incorrect answer on the test and to an runtime error of the program.

In g++/clang++ there is a remarkable tools called sanitizers. It's such a way to compile a program in a special mode so that when it's working, it will check it for undefined behavior (and some other errors) and, if any, print them to stderr. The drmemory (it is similar to valgrind, but for Windows) has similar functionality, which starts the program in a special mode to detect errors. With such two diagnostic launches, the performance of the program suffers tremendously (the program is executed 5-100 times slower and requires more memory), but often it's worth it.

Now automatic diagnostics in some cases will prevent a question like "Why does not work ???", indicating the error or its appearance!

If your solution:

  • written in C++,
  • finishes with a verdict "wrong answer" or "runtime error"
  • on this test worked extremely quickly and consumed a little memory,

then it will be restarted using special diagnostic compilers (clang ++ with sanitizers and g++ with drmemory). If an execution error occurs during this launch, the diagnostics log will be displayed in the test details in the "diagnostics" section. Of course, this entry will contain a technical report in English, but often it will indicate to you the error of the program. Often it contains the cause of the mistake and even the source code line. If the diagnostics are not displayed, then at least one condition above is not fulfilled or the diagnostics has not detected any errors.


Example of the diagnostics:  here it is written that there was an array out of range error in the line 78.

Thus, the diagnostics will sometimes help you to find a mistake like "out of bounds error", "signed numbers overflow", "uninitialized variable", etc. Carefully read the diagnosis and do not make such mistakes in the future!

I wish your programs did not fail. I hope the innovation will be useful!

There are big plans as it is useful to apply such diagnostics. Do not go far, wait for news, soon there will be more innovations!

P.S. Also, diagnostic compilers are simply available for use. For example, you can use them on the "Custom invocation" tab. I recall that the program runs many times slower and consumes more memory in diagnostic mode.

Full text and comments »

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

By MikeMirzayanov, 7 years ago, In English

The contest is declared unrated. For Technocup, results of this round will be counted for elimination. Also, we plan to hold one more (the fourth) elimination round to compensate this failure. Stay tuned for updates. We apologize for the situation, hope you enjoyed the problems.

Hello.

If you are upset about today round, I understand you. Please, downvote this blog instead of the official announcement. The coordinator, writers and tester did a great job making the round. But technical issues erased their effort.

The chain of technical issues leaded to so bad work of the website. This week our server with Polygon system had broken and Mail.Ru quckly replaced it with another one. I forgot to reconfigure Polygon on the new server and it leaded to 502 during the contest. Also today one Codeforces server stopped to respond and I do not know the reason yet (it is first time issue with this server).

Right now I feel myself very upset and thinking about the way to change an approach to have enough time to setup, monitor and develop the system.

Sorry again about it.

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello!

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

On Saturday, October 21, 08:05 (UTC) will start online-mirror 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred).

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
  • +122
  • Vote: I do not like it

By MikeMirzayanov, 7 years ago, In English

Codeforces Round 440 will start on October 15 (Sunday), 08:05 (UTC). It will be based on Technocup 2018 Elimination Round 2. So, if you are a Russian-speaking high-school student, please take part in the Technocup 2018.

Codeforces Round 440 is open and rated for everyone.

Wish you good luck and bugless code.

Editorial is posted.

Congratulations to winners!

Technocup official round:

  1. Mikhniuk
  2. scanhex
  3. Krisha
  4. lis
  5. FalseMirror

Div. 1:

  1. khadaev
  2. Errichto
  3. eddy1021
  4. FizzyDavid
  5. fateice

Div. 2:

  1. wdmmsyf
  2. Legilimens2023
  3. destinydrifter
  4. oscar114514
  5. OMS

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

Hello, Codeforces!

I'd like to invite you to Codeforces Round #436 (Div. 2). It'll be held on Monday, September 25 on 10:35 UTC and as usual Div. 1 participants can join out of competition. Note that round starts in the unusual time!

This round is held on the tasks of the school stage All-Russian Olympiad of Informatics 2017/2018 year in city Saratov. They were prepared by Perforator, MikeMirzayanov and fcspartakm. Many thanks to the testers: sdya и BledDest, and coordinators KAN and vintage_Vlad_Makeev.

It will be a little unusual round — you will be given six problems and two hours to solve them.

Good luck and have fun!

Congratulations to winners!

Div. 2:

  1. zjt_ioi_2019_ak
  2. AngusRitossa
  3. Jha_The_ME_Coder
  4. cxh007
  5. Alexxx

Div. 1:

  1. Shik
  2. dreamoon_love_AA
  3. black_horse2014
  4. orbitingflea
  5. KassiJulgus

Analysis is here.

Full text and comments »

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

By MikeMirzayanov, history, 7 years ago, In English

Welcome to 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred).

The contest was held yesterday on September 17. Mostly it is focused on the participants of the Div 2.

Note that you can print PDF (English or Russian) with the statements. It will be available on the contest dashboard page on the right.

Good luck!

Full text and comments »

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

By MikeMirzayanov, 7 years ago, translation, In English

I apologize to the participants of the round. It happened that I accidentally had run improper script and it rebooted the judging machines. It is very insulting, because most problems were proposed by me and I hoped to host an interesting competition for you. A lot of effort was spent on preparation. Apparently, the mistake of just such a human character happened for the first time. I really hope not to repeat it in the future.

MikeMirzayanov


Want problems? We have some!

Codeforces Round 434 will start on September 17 (Sunday), 13:05 (UTC). It will be based on Technocup 2018 Elimination Round 1. So, if you are a Russian-speaking high-school student, please take part in the Technocup 2018.

Many thanks to KAN, vovuh, Neon, ifsmirnov, irkstepanov and WHITE2302 for their help in round preparation. Some problem ideas are mine.

I hope you will like problems. There will be 6 problems in div. 2 and 5 problems in div. 1.

Wish you good luck and bugless code.

Full text and comments »

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

By MikeMirzayanov, 8 years ago, In English

Hello, Codeforces!

I am pleased to announce the 2nd Hello Barcelona Programming Bootcamp in collaboration with Moscow Workshops ACM ICPC, which will be hosted by our partner Harbour.Space University together with Moscow Workshops ACM ICPC, ITMO University, Moscow Physics and Technology University, Saint Petersburg State University and Codeforces!



The boot camp will be held from September 27th to October 5th in Barcelona. This time it will be at the beautiful and technologically mind-bending Media-TIC building — the Smart Building of Tomorrow.



Media-TIC building — the Smart Building of Tomorrow

The world's greatest coaches will be attending: Andrew andrewzta Stankevich, Michael Endagorion Tikhomirov, Gleb GlebsHP Evstropov, Artem VArtem Vasilyev and other world renowned Russian coaches. As a coach, I will come too. The Chief Judge of the camp is Oleg snarknews Khristenko. Seriously, it will be a unique opportunity for teams around the world to learn from such well-known and successful coaches in the ACM-ICPC world.

Having visited the first Hello Barcelona programming Bootcamp in February, I left the event feeling inspired from the overall atmosphere. I am sure that all teams received an immense amount of knowledge and skills. As one of the coaches, all of the flattering reviews about the camp from the participants were pleasant for me to hear. I am very glad that these camps are becoming regular. Harbour.Space University and Moscow Workshops ACM ICPC have done a job worthy of admiration!

The Bootcamp will be split in two divisions:

  • Division A. Designed to prepare students to excel and win medals in the next ACM-ICPC World Finals.

  • Division B. Designed to help teams prepare for the next season of ACM-ICPC Regionals and international competitions. This is an appropriate introduction for teams and students new to the world of ACM ICPC and competitive programming competitions in general. The Division B curriculum features thematic lectures and contests.

The participation fee is unchanged: €1270 per person (cultural program, accommodation and half-board meals included).

Single participants and teams must register by July 1st, 2017 to receive the 15% off-Early Bird Discount, or the 20% off-Loyalty Discount, which is awarded to teams that participated in previous Moscow Workshops ACM ICPC boot camps.


Learn more about Barcelona ACM-ICPC Bootcamp

You can ask any questions by email: hello@harbour.space

Hope to meet you on the Bootcamp, Mike Mirzayanov

In order to experience the atmosphere of the event, I suggest you familiarize yourself with the photos and videos from the 1st Hello Barcelona programming Bootcamp in collaboration with Moscow Workshops ACM ICPC.

Full text and comments »

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

By MikeMirzayanov, 8 years ago, translation, In English

ACM-ICPC World Finals 2017 will begin on May 24, 2017 at 15:00 (UTC). This event is the main event of the year in the world of sports programming!

This year ICPC Regional participation included 46,381 of the finest students and faculty in computing disciplines from 2,948 universities in 103 countries on six continents. A record 50,145 students and 5,073 coaches competed in ICPC and ICPC-assisted competitions this year, setting new records in participation.

Codeforces wishes the teams to show a vivid and interesting contest contest. We wish to find beautiful solutions, write without bugs and enjoy many accepted problems!

Links:

ACM ICPC World Finals 2017 English Broadcast:
ACM ICPC World Finals 2017 Indian Broadcast:
ACM ICPC World Finals 2017 Chinese Broadcast:
ACM ICPC World Finals 2017 Arabic Broadcast:
Broadcast from legends: Petr, tourist, Endagorion:

Full text and comments »

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

By MikeMirzayanov, 8 years ago, translation, In English

Hello, Codeforces!

The ACM-ICPC World Finals 2017 event is running now. Tomorrow will be the main contest. During these days the directorate of ACM-ICPC shared some news.

  • Let me remind you that this season (2016-2017) is last, when the general sponsor of the championship is IBM. For 20 years, IBM has supported ACM-ICPC, investing millions of dollars annually. Thank you, IBM! At the moment, the model is actively being worked out, when there will be not one general sponsor, but there will be a fund in which several companies will participate. At the opening ceremony the Sport Programming Foundation was mentioned. I believe this Foundation will be the main one for the future seasons of the championship. However, these are not yet close plans.

    It was announced that the next three years the general sponsor of ACM-ICPC will be JetBrains! This is amazing news. Particularly pleased that this is actually a Russian company, and its executive director Maxim Shafirov coached the team of St. Petersburg State University, which became the world champion in 2000! I'm sure that the wonderful development environment from JetBrains in the future finals of the championship will await us as a pleasant bonus.

  • There is a reform of the qualifying stages of the championship. For example, now Rissian+ regional contest (NEERC) is not part of the European Regionals, but is a separate league of the Northern Eurasia. In general, eight leagues (read, super-regions) were singled out: Europe, Northern Eurasia, North America, Latin and South America, two leagues in Asia, Africa and probably Australia and Oceania. It is planned that each league will have its own separate finals with medals and the top 12 teams from each league will receive a ticket to the World Finals. While these are still distant plans, but the first steps have already been taken. Discusses its quota on the number of participations in the league finals (3 times).

  • Unfortunately, this year a significant part of the teams did not receive a visa at all (5 teams) and a dozen more could not arrive completely because of the visa problems of one of the participants. Saratov State University, apparently, is among them. It was announced the decision to invite to the next Wold Finals without any selections and quota accounting for 5 teams that could not come this year. In addition, it is proposed to give a +1 year to participate (without taking into account any other requirements) to all teams that could not arrive completely.

  • The next Finals will be held in Beijing, and a year later — in Kochi (India).

Such news.

Full text and comments »

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

By MikeMirzayanov, 8 years ago, In English

Hello!

I'm happy to visit Rapid City and meet so many bright contestants here!

I have Codeforces laptop stickers with me and I'll be glad to give them as small gifts to participants of the World Finals. You can find me (I do not have many stickers, be quick) to get gifts. My friend collects coins, so I'll be glad to receive a coin from your country as a souvenir.

See you. And good luck on the contest!

Mike

UPD Still have few stickers. You have a chance!

Full text and comments »

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

By MikeMirzayanov, 8 years ago, translation, In English

Hello, Codeforces!

I'd like to invite you to join in Playrix Codescapes Cup for the both divisions that will be held on May 11 at 18:35 MSK. The round is rated and open for everyone.

Problems are prepared by KAN, Al.Cash, MikeMirzayanov and fcspartakm. Huge thanks to Playrix company for making this round possible. Hope you enjoy the round!

Playrix is one of the leading mobile games development companies in the world. Its distributed team consists of 450 professionals from around the world. The company has released three successful mobile free-to-play games – Township, Fishdom and Gardenscapes. All of the projects have consistently been among the Top 50 Grossing Apps for iOS and Google Play since their release.In 2016, Facebook named Gardenscapes game of the year.

Company is looking for Russian-speaking C++ developers.

Prizes from the Playrix company:

  • Top 1: iPadPro 9,7 + PowerBank + T-shirt with logo
  • Top 2-5: PowerBank + T-shirt with logo
  • Top 6-50: T-shirt with logo
  • (New!) Random 5 participants (not from top-50, submitted at least once): T-shirt with logo

Congratulations to the winners!

  1. tourist
  2. LHiC
  3. subscriber
  4. W4yneb0t
  5. enot110

The problem analysis is published.

Full text and comments »

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