MikeMirzayanov's blog

By MikeMirzayanov, 4 weeks 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.

Read more »

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

By MikeMirzayanov, 5 weeks 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.

Read more »

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

By MikeMirzayanov, 6 weeks 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

Read more »

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

By MikeMirzayanov, 6 weeks 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 _kun_ 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, _kun_, 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.

Read more »

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

By MikeMirzayanov, 3 months ago, translation, In English,

Hello, Codeforces!

I offer you also to join testing of HTTPS support. Just visit to https://codeforces.com/ 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!

Read more »

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

By MikeMirzayanov, 3 months 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):

Read more »

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

By MikeMirzayanov, 3 months 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.

Read more »

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

By MikeMirzayanov, 4 months 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

Read more »

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

By MikeMirzayanov, 4 months 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

Read more »

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

By MikeMirzayanov, 4 months 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!

Read more »

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

By MikeMirzayanov, 4 months 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 gritukan 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) (evil666man, 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

Read more »

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

By MikeMirzayanov, 6 months ago, In Russian,

2 марта в 18:35 начнётся второй квалификационный раунд чемпионата VK Cup 2018!

Правила этого раунда будут совпадать с правилами Квалификации 1. К участию приглашаются команды, не участвовавшие в первой квалификации или набравшие в ней менее 2600 баллов. Те, кто успешно справился с первой квалификацией, могут принять участие вне конкурса, при этом их результаты никак не будут влиять на проход остальных команд. Разумеется, от команд, участвующих вне конкурса, также требуется соблюдение всех правил Чемпионата.

Для участия в раунде сначала необходимо зарегистрировать команду в чемпионате по ссылке:

Зарегистрировать команду на Чемпионат →

Затем следует зарегистрироваться на Раунд:

Зарегистрироваться на Раунд →

Раунд продлится 24 часа, такая продолжительность выбрана для того, чтобы все нашли себе удобное время для участия. Квалификационный раунд, как и все предстоящие раунды, требует отдельной регистрации, она будет открыта на протяжении всего раунда.

При регистрации на раунд состав вашей команды фиксируется и не подлежит дальнейшей модификации. Вы не сможете в будущем добавить или удалить члена команды. Пожалуйста, перед регистрацией убедитесь, что у вас нет желания изменить состав. Состав команды не сможет быть изменен, даже если вы отмените регистрацию на квалификационный раунд.

В Раунд 1 пройдут все команды, которые наберут положительное количество баллов, не меньше количества баллов у команды на 500-м месте.

Во время квалификации задачи тестируются системой только на претестах, а системное тестирование состоится после окончания раунда. Обратите внимание, что претесты не покрывают все возможные случаи входных данных, поэтому тщательно тестируйте свои программы! Взломов, падения стоимости задач во время квалификации не будет. Время сдачи задач не будет учитываться, однако будут учитываться штрафные попытки.

Категорически запрещается публиковать где-либо условия задач/решения/какие-либо мысли и соображения о них до окончания раунда. Запрещено обсуждать задачи с кем-либо, кроме вашего сокомандника. Будьте честны, пусть в Раунд 1 пройдут сильнейшие!

После окончания раунд станет доступен всем для дорешивания, а его задачи попадут в архив, в том числе и на английском языке.

Read more »

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

By MikeMirzayanov, 6 months ago, In Russian,

Всем привет!

24 февраля в 18:35 начнется первый квалификационный раунд чемпионата VK Cup 2018!

Раунд продлится 24 часа, такая продолжительность выбрана для того, чтобы все нашли себе удобное время для участия. Квалификационный раунд, как и все предстоящие раунды, требует отдельной регистрации. Регистрация уже открыта и будет открыта на протяжении всего раунда. Результаты раунда не влияют на рейтинг Codeforces.

При регистрации на любой из квалификационных раундов состав вашей команды фиксируется и не подлежит дальнейшей модификации. Вы не сможете в будущем добавить или удалить члена команды. Пожалуйста, перед регистрацией убедитесь, что у вас нет желания изменить состав. Состав команды не сможет быть изменен, даже если вы отмените регистрацию на квалификационный раунд.

Если вы пока не уверены в текущем составе команды, то не регистрируйтесь на предстоящий раунд. Если вы не будете участвовать в первой квалификации или не пройдете по ее результатам в Раунд 1, то вы сможете попробовать свои силы во второй квалификации.

Чтобы пройти в Раунд 1, вам надо принять участие хотя бы в одной из квалификаций. Из каждой квалификации в Раунд 1 проходят все команды с положительным числом баллов, которые набрали не меньше баллов, чем команда на 500-м месте.

Во время квалификации задачи тестируются системой только на претестах, а системное тестирование состоится после окончания раунда. Обратите внимание, что претесты не покрывают все возможные случаи входных данных, поэтому тщательно тестируйте свои программы! Взломов, падения стоимости задач во время квалификации не будет. Время сдачи задач не будет учитываться, однако будут учитываться штрафные попытки.

Категорически запрещается публиковать где-либо условия задач/решения/какие-либо мысли и соображения о них до окончания раунда. Запрещено обсуждать задачи с кем-либо кроме вашего сокомандника. Будьте честны, пусть в Раунд 1 пройдут сильнейшие!

Результаты раунда не будут влиять на рейтинг, внеконкурсное участие в раунде не разрешается. Однако, после окончания раунд станет доступен всем для дорешивания, а его задачи попадут в архив в том числе и на английском языке.

Read more »

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

By MikeMirzayanov, 6 months 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

Read more »

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

By MikeMirzayanov, history, 7 months ago, In Russian,

Добрый день!

Прямо сейчас идет первый тур олимпиады. Посылаю участникам лучи интеллекта и внимательности! Надеюсь, и задачи и результаты вас порадуют.

Предлагаю в комментариях обсудить задачи (когда тур завершится во всех регионах) и результаты.

Наверное, в этом году большинство регионов проводит на Яндекс.Контесте. Интересно, многие ли регионы проводят самостоятельно?

Желаю всё решить, успеть оттестировать и получить максимальные баллы!

Read more »

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

By MikeMirzayanov, history, 7 months 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

Read more »

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

By MikeMirzayanov, 8 months 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), gritukan (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, PikMike, 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.

Read more »

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

By MikeMirzayanov, 8 months 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!

Read more »

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

By MikeMirzayanov, 8 months ago, In Russian,

Привет, Codeforces!

Перед полуфиналом ACM-ICPC у меня возникла неожиданная мысль воспользоваться моментом и взять интервью у самого успешного тренера в истории чемпионатов по программированию (ACM-ICPC) Андрея andrewzta Станкевича. Было интересно попробовать и себя в новом качестве. Мне кажется, Андрей рассказал много интересного. Спасибо!

Если вам было интересно, то оставляйте в комментариях ваши предложения с кем было бы интересно побеседовать в следующие выпуски. Приятного просмотра.

Спасибо Андрею за интересный рассказ и ИТМО за предоставленную возможность и помощь.

Read more »

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

By MikeMirzayanov, history, 8 months 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!

Read more »

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

By MikeMirzayanov, history, 8 months 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

Read more »

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

By MikeMirzayanov, 9 months 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.

Read more »

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

By MikeMirzayanov, 9 months 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.

Read more »

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

By MikeMirzayanov, 10 months 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

Read more »

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

By MikeMirzayanov, 10 months 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. Horoshi_chelovek
  2. scanhex
  3. Krisha
  4. ZinchenkoDanil
  5. neckbosov

Div. 1:

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

Div. 2:

  1. wdmmsyf
  2. oscillation
  3. pulkit.kapoor
  4. oscar172772
  5. OMS

Read more »

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