Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 5 лет назад, По-русски

Привет, Codeforces.

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

Иногда после окончания раунда в комментариях указывают на неполноту тестов и просят добавить тот или иной тест. Теперь этот процесс автоматизирован.

Встречайте, фазу довзламывания!

Теперь, после окончания почти любого соревнования у участников из Div.1 в течение недели возможность довзламывать любые решения в этом соревновании. Да-да, в том числе официальные решения с раундов. В случае удачного взлома:

  • ваш тест будет автоматически добавлен в задачу и будет использован в будущем при тестировании этой задачи;
  • если взломанное решение является дорешиванием, то его вердикт изменится на «решение взломано», иначе его вердикт останется без изменения;
  • участник, чье решение взломали, получит уведомление об успешном взломе его решения;
  • каждое решение может быть успешно взломано лишь единожды.

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

Надеюсь, что это нововведение окажется полезным и тесты к задачам станут еще лучше!

MikeMirzayanov

UPD: Наверное, позже мы продлим период довзламывания и уменьшим требования к рейтингу взломщиков.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +784
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 5 лет назад, перевод, По-русски

Привет, Codeforces!

Вы же помните мой пост Новое: Диагностика решений на C++? Если нет, пожалуйста, прочтите его.

Совсем недавно я реализовал улучшенное отображение диагностики. Теперь на страницах со списком попыток (статус) вы иногда можете заменить вот такое нововведение:

По нажатию на значок  вы увидите код с выделенной проблемной строкой и описание возможной ошибки.

Как вам?

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1754
  • Проголосовать: не нравится

Автор MikeMirzayanov, 5 лет назад, По-английски

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

The prizes for the 6-round series in 2019:

  • In each round top-100 participants get points according to the table.
  • The final result for each participant is equal to the sum of points he gets in the four rounds he placed the highest.
  • The best 20 participants over all series get sweatshirts and place certificates.

Current standings after two rounds:

Place Contestant = Round 1 Round 2
1 tourist 1706 1000 706
2 Um_nik 1281 706 575
3 ecnerwala 1000 1000
4 mnbvmar 900 497 403
5 sunset 814 443 371
6 TLE 599 575 24
7 ksun48 569 371 198
8 fateice 518 307 211
9 Endagorion 510 13 497
10 Petr 443 443
11 lych_cys 436 218 218
12 jqdai0815 403 403
13 yokozuna57 399 74 325
14 neal 382 211 171
15 molamola. 346 346
15 Rewinding 346 346
17 snuke 325 325
18 jonathanirvings 323 97 226
19 realDonaldTrunp 307 307
20 V--o_o--V 291 291
20 krijgertje 291 291
22 LHiC 277 277
22 yhx-12243 277 277
24 kmjp 272 226 46
24 ania 272 198 74
26 lumibons 265 265
26 visitWorld 265 265
28 sigma425 254 254
28 leaf1415 254 254
30 webmaster 246 60 186
31 zemen 245 204 41
32 uwi 244 244
32 Arterm 244 244
34 whzzt 241 171 70
35 dotorya 235 235
35 peltorator 235 235
37 MofK 206 8 198
38 vammadur 204 204
39 mareksom 201 99 102
40 AFO_OFA 194 78 116
41 riadwaw 192 192
42 yutaka1999 186 186
43 Kostroma 185 4 181
44 calabash_grandfather 181 181
45 voover 176 176
45 hos.lyric 176 176
47 Alex_2oo8 166 166
47 yosupo 166 166
49 TLEwpdus 161 161
49 supy 161 161
51 kdh9949 157 157
51 I_love_Tanya_Romanova 157 157
53 SpyCheese 153 153
53 E869120 153 153
55 Subconscious 149 149
55 maroonrk 149 149
57 mmaxio 145 145
57 Egor.Lifar 145 145
59 AghaTizi 142 142
59 Nazikk 142 142
61 eatmore 138 138
61 riantkb 138 138
63 VArtem 135 135
63 yuxiaogang 135 135
63 ainta 135 135
66 fyy2603 131 131
66 edisonhello 131 131
68 izban 128 128
69 voidmax 125 125
69 _rqy 125 125
69 KMAASZRAA 125 125
72 irkstepanov 122 122
73 Rzepa 119 119
73 jah_melon 119 119
75 aid 118 107 11
76 Egor 116 116
76 JOHNKRAM 116 116
78 G.Z.V.O.D.E.N 113 113
79 Cyanic 112 52 60
80 allllekssssa 110 110
80 kazuma 110 110
82 Maksim1744 107 107
83 weizhaohui 105 105
83 NoLongerRed 105 105
85 pobiren 102 102
86 Itst 99 99
87 TangentDay 97 97
87 chenjb 97 97
89 Merkurev 94 94
90 scanhex 92 92
90 sugim48 92 92
92 geniucos 90 90
92 dreamoon_love_AA 90 90
94 tfg 87 87
94 TimonKnigge 87 87
94 ToTLeS 87 87
97 Elegia 85 85
98 kczno1 83 83
98 Sugar_fan 83 83
100 _Happy_New_Year_ 80 80
100 131131yhx 80 80
102 Hazyknight 78 78
102 DEGwer 78 78
104 Roundgod 76 76
105 Radewoosh 74 74
106 Xellos 72 72
107 QAQAutoMaton 70 70
107 flying_fish 70 70
109 Vergara 68 68
109 oversolver 68 68
111 djq_fpc 66 66
112 hermano95 63 63
112 orz 63 63
114 laofudasuanbaofushehui 62 62
114 fuppy 62 62
116 ilyakor 60 60
116 kokokostya 60 60
118 Farhod 58 58
119 isaf27 56 56
120 craborac 54 54
120 superguymj 54 54
122 zerokugi 52 52
122 cuizhuyefei 52 52
124 kf11 50 50
124 Worteltje 50 50
126 imalyd 48 48
127 Reyna 46 5 41
127 Tommyr7 46 46
129 zeliboba 45 45
129 JettyOller 45 45
129 kobae964 45 45
132 natsugiri 43 43
133 wzp666 41 41
133 -14 41 41
135 camypaper 39 39
136 yfzcsc 37 37
137 orbitingflea 36 36
137 SidneyEarth 36 36
137 logicmachine 36 36
140 zhou888 34 34
141 fedoseev.timofey 32 32
141 hloya_ygrt 32 32
143 chemthan 31 31
143 Hezhu 31 31
145 satashun 29 29
145 why_no_girlfriend 29 29
147 HanwhaEagles 27 27
147 zhangqingqi 27 27
147 PinkieRabbit 27 27
150 gazelle 26 26
151 lzyrapx 24 24
152 DAyamaCTF 22 22
152 athin 22 22
154 cerberus97 21 21
154 Sonechko 21 21
156 HuaJun 19 19
156 WA_TLE 19 19
158 GyojunYoun 17 17
158 Rebelz 17 17
160 FizzyDavid 16 16
160 jijiang 16 16
162 cz_yixuanxu 14 14
162 gyz_gyz 14 14
162 majk 14 14
165 adadadd 11 11
165 AprilGrimoire 11 11
167 endless-chase 10 10
168 amnesiac_dusk 8 8
169 teapotd 7 7
169 BigBag 7 7
169 Golovanov399 7 7
172 zhouzhendongYa 4 4
173 ko_osaga 2 2
173 Sulfox 2 2
175 gamegame 1 1
175 rais.fathin38 1 1

Полный текст и комментарии »

  • Проголосовать: нравится
  • +40
  • Проголосовать: не нравится

Автор MikeMirzayanov, 5 лет назад, По-английски

During the past few days, we have done some internal optimizations (thanks, kuviman). Before the start of Codeforces Global Round 3, I want to be absolutely sure that everything works correctly. I ask you to help us to test the system. Please, take part in Testing Round 15 (Unrated). It is unrated, contains 1-2 easy well-known problems. The pretests will be extremely weak to increase the number of hacks. Thanks!

UPD: It seems everything works great. Thanks!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +36
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет, Codeforces!

Сегодня мной было выпущено важное обновление Polygon – частичная поддержка расширенных свойств ресурсов. Основная задача, которая решается этим обновлением – это поддержка разработки задач с грейдерами.

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

Например, в условии задачи может быть написано, что в решении на С++ надо реализовать функцию, которая имеет вот такой прототип int sum(int a, int b) и отослать реализацию. В таком случае, участнику достаточно отправить исходный код, который содержит реализацию этой функции. Затем при тестировании решения по такой задаче система должна скомпилировать и слинковать в единый исполняемый файл присланный участником файл и специальный подготовленный жюри файл, который будет содержать весь остальной необходимый код (в частности, там будет функция main).

В случае задачи A+B такой файл, который и называется грейдером, может выглядеть так (grader.cpp):

#include <iostream>
int sum(int a, int b);
int main() {
	int a, b;
	std::cin >> a >> b;
	std::cout << sum(a, b) << std::endl;
}

Решение такой задачи может выглядеть так:

int sum(int a, int b) {
    return a + b;
}

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

Теперь в Полигоне реализована базовая поддержка таких задач (спасибо PavelKunyavskiy и cannor147 за помощь!), я начал с поддержки только C++.

Для того, чтобы добавить файлы грейдера, вы должны загрузить их как ресурсы, указав дополнительные расширенные свойства: что ресурсы применимы к языкам группы cpp.*, что это ресурсы времени компиляции и что с ними надо компилировать именно решения.

После добавления таких ресурсов, при компиляции решений они будут находиться в одной папке с решением, а те ресурсы, что являются C++-файлами, будут переданы в командную строку компилятору.

Обратите внимание, что вся дополнительная информация для ресурсов доступна в дескрипторе задачи problem.xml, а также реализована поддержка нововведения в API (смотрите документацию по методам problem.files и problem.saveFile).

Позже будет добавлена поддержка некоторых других языков, возможность подобным образом прицеплять ресурсы не только к решениям, но и к валидаторам/интеракторам/чекерам. Конечно, следует ожидать поддержку таких задач на Codeforces. Отмечу, что подобные задачи могут найти своё применение не только в олимпиадном движении, но и просто в образовательном процессе. Например, я легко могу представить учебную задачу на Java, в которой требуется реализовать заданный интерфейс, а вся рутина (unit-тесты и прочие вещи) спрятаны в коде ресурсов.

P.S. Поддержка грейдеров появилась не просто так — сегодня начинаются сборы школьников по подготовке к международной олимпиаде школьников. Полагаю, что возможность подготавливать задачи с грейдерами в Полигоне поможет научному комитету сборов. А всем участникам я желаю удачных туров!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +508
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

Many thanks to problem authors — Tech Scouts instructors. Please, review the author's solutions. They are beautiful and short. Our community has many to learn from mathematicians!

Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...
Tutorial is loading...

Полный текст и комментарии »

  • Проголосовать: нравится
  • +49
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

What do you know about real Mathforces? This is a world full of numbers, theorems and formulas. Are you ready for the adventure full of challenges and dangers in a new world?

Our friends from Harbour.Space University, the International Tournament of Young Mathematicians (ITYM) and St. Paul's International School Barcelona for the second time organize Tech Scouts — two week International summer camp for high school students. I really think it is a valuable and useful initiative.

For some participants the organizers cover participation fee, the decision is based on the results in special online math test and phone interview.

I invite you to take part in Mathforces: Tech Scouts Online Test 2018 (just fun and practice, unofficial, unrated). It was offered to candidates a year ago, in 2018. This year participants can use it as a practice. I think for many of you it will be interesting to compare your math skills. It starts on May/05/2019 11:05 (Moscow time).

The duration of the test will be 2 hours. You will be offered about 20 math questions. Each of them are expected to be solved using math skills. Please refrain from writing code and try to solve problems without any programming.

You can skip questions or re-submit answers during the test. All the answers will be judged after the test ends. Each question costs 1-3 points in case of the correct answer. Please, do not share your answers before the end of the test.

For sure, the test will be unrated.

Please refrain from participation if you have already participated in this test last year.

UPD 1: The problems will be in English.

UPD 2: The tutorials are published.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +194
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

Hello,

Three days ago I was forced to come back to ITMO (at midnight!) to turn on the server. I was just happy that the night security at the university understood everything and I got into the server room without any issues. It seems the server was overheated and and shut down. Today, I and cdkrot are planning to update a thermal grease in it. We have not done this before (but I watched the video on YouTube). Wish us good luck!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +326
  • Проголосовать: не нравится

Автор MikeMirzayanov, история, 6 лет назад, По-английски

Hi!

I didn't find any blog post about the round. So, let's discuss it. I'm a little bit upset, because I didn't solve C. Actually, on last minutes I wrote the solution which should pass if replace linear searches with binary.

Am I right that now Google doesn't publish tests?

P.S. And eatmore is right. The standings are completely unusable (

Полный текст и комментарии »

Теги gcj, 2019, 1b
  • Проголосовать: нравится
  • +226
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, перевод, По-русски

4-го апреля 2019 г. в 14:00 (московское время) начнется главное событие года в мире спортивного программирования — финал командного студенческого чемпионата мира ICPC 2019!

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

За путевку в финал ICPC на региональных отборочных турнирах соревновались 52709 лучших студентов-программистов из 3233 университетов, представляющих 110 стран. Напоминаем, что в действующим чемпионом мира является команда Московского государственного университета.

Болейте за своих земляков, любимые команды и просто сопереживайте участникам!

Codeforces желает командам показать яркий, интересный, полный борьбы контест. Желаем находить красивые решения, писать без багов и побольше радоваться решенным задачам!

Болеем по ссылкам:

Трансляция на русском языке:
Трансляция на английском языке:
Legends Live Stream (Endagorion + Petr + tourist):

Полный текст и комментарии »

  • Проголосовать: нравится
  • +590
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет, Codeforces!

Вот несколько последних улучшений здесь и в Polygon.

Слабые и утекшие пароли

Мы часто слышим об утечках паролей от различных сервисов. Учитывая, что иметь одинаковые пароли распространённая (но небезопасная) практика, на Codeforces и в Полигоне были внедрены улучшения для определения слабых или утекших паролей. Если сверху сайта вы видите плашку, что ваш пароль небезопасен, то просто тут же смените его.

Указание типа раунда при создании предложения о контесте

Этот пункт немного лучше упорядочивает работу с авторами. При создании предложения контеста, пожалуйста, указывайте тип контеста. Оставьте поле пустым только, если вы совсем не уверены в типе раунда (что странно).

Календарь

Исправлены ошибки при синхронизации официальных контестов Codeforces в календаре. Теперь всё должно быть чётко.

Я доверяю этому пользователю

В настоящее время Codeforces предоставляет развитую инфраструктуру для организации контестов, кружков и тренировок. С помощью доменных групп и мэшапов абсолютно штатными средствами проводятся соревнования разного уровня и официальности. Дошло до того, что организаторы иногда не являются регулярными участниками раундов Codeforces и не имеют прав на некоторые из действий. Теперь любой красный участник может подтвердить своё доверие другому аккаунту, и тот получит права на: написание комментариев/постов, создание приватных групп, создание мэшапов. Я надеюсь это избавит меня от определенной рутины обработки подобных запросов.

Подтверждение через email при входе в Polygon

В случае, если ваш текущий IP-адрес и браузер давно не использовались для входа в Polygon, то вам может быть предложено войти с подтверждением email. В таком случае, просто перейдите по секретной ссылке, которая придёт вам на почту.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +505
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

Thanks for taking part in the round. I hope you enjoyed the round. It happens that the statements were really easy to understand (thanks to testers). We've got only 38 questions during a round!

Tutorial is loading...
Code
Tutorial is loading...
Code
Tutorial is loading...
Code
Tutorial is loading...
Code
Tutorial is loading...
Code
Tutorial is loading...
Tutorial is loading...
Code
Tutorial is loading...
Code

Полный текст и комментарии »

Разбор задач Codeforces Round 547 (Div. 3)
  • Проголосовать: нравится
  • +39
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет, Codeforces!

Я рад пригласить вас на Codeforces Round 547 (Div. 3), который начнётся во 19.03.2019 17:35 (Московское время). К официальному участию приглашаются все, чей текущий рейтинг строго меньше 1600. Все остальные — могут принять участие вне конкурса.

Так получилось, что расписание этого месяца не пестрит раундами (координаторы, мы надеемся на вас!), и поэтому я решил частично исправить ситуацию. Все задачи этого раунда придуманы и подготовлены мной в последний день сборов Hello Muscat Programming Bootcamp 2019 и в перелетах из Маската в Санкт-Петербург. Я даже специально засёк время на подготовку: к текущему моменту (задачи готовы к тестированию) я потратил около 6 часов на их подготовку, включая придумывание некоторых из задач. Мне очень нравится работать над задачами, это что-то на стыке творчества и программирования. Очень надеюсь, что вам понравится результат моей работы.



Я в Омане во время придумывания задач для раунда.

Раунд пройдет по правилам образовательных раундов. Таким образом, во время раунда задачи будут тестироваться на предварительных тестах, а после раунда будет 12-ти часовая фаза открытых взломов. Вам будет предложено 6-8 задач на 2 часа на их решение.

Штраф за неверную попытку в этом раунде (и последующих Div. 3 раундах) будет равняться 10 минутам.

Напоминаем, что в таблицу официальных результатов попадут только достоверные участники третьего дивизиона. Как написано по ссылке — это вынужденная мера для борьбы с неспортивным поведением. Для квалификации в качестве достоверного участника третьего дивизиона надо:

  • принять участие не менее чем в двух рейтинговых раундах (и решить в каждом из них хотя бы одну задачу),
  • не иметь в рейтинге точку 1900 или выше.

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

Я надеюсь чуть позже вместо этого абзаца появится длинный список благодарностей тестерам. Я пока только планирую отдать раунд в тестирование. Спасибо тестерам ivan100sic, KrK, Benq, I_love_Tanya_Romanova, nhho! UPD: И спасибо новым тестерам Pavs, awoo, Narts, anon20016, Stresshoover, Ivan19981305, кто прорешал задачи в режиме контеста.

Удачи на раунде,
MikeMirzayanov

Полный текст и комментарии »

  • Проголосовать: нравится
  • +809
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет!

Мы поддержали отображение LaTeX-формул с помощью MathJax в новых постах и комментариях. Теперь формулы будут такие же красивые, как и в условиях задач. Из минусов — они не сразу отображаются, а переотрисовываются после отображения страницы. Старые посты и комментарии отображаются по старому (уже много старого контента, обратная совместимость очень важна). Замечу, что если вы отредактируете старый пост, то всё равно он будет отображаться в старом стиле.

Несколько примеров: $$$1 \le n \le 10^{12}$$$,  $$$c = \sqrt{a^2+b^2}$$$,  $$$i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>$$$.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1169
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, перевод, По-русски

Привет, Codeforces.

На прошлой неделе я стартовал эксперимент.

Я верю в полу-автоматизированное обучение программирования через задачки. Есть понятные плюсы такого подхода: независимость практики от преподавателя, хорошее тестирование решений, понятные майлстоуны у ученика, способность системы к масштабированию.

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

Наверняка какие-то структурированные курсы для обучения языку с нуля уже есть. Но почему бы не сделать именно так, как нравится именно мне? ИМХО, здесь принципиально важен набор задач — рост уровня их сложности, разнообразие, отсутствие требований в математической подготовке. У меня есть опыт преподавания (ОМГ, почти 20 лет!), некоторые наработки от моей работы со студентами Саратовского университета и желание попробовать!

Итак, эксперимент. Начиная с 20-го февраля замечательная девушка le.mur занимается изучением основ C++ с нуля под моим присмотром и руководством. Мы договорились, что свои впечатления она фиксирует в специальном Instagram-аккаунте (подписывайтесь, это мотивирует!) Лена не училась математике каким-либо углубленным образом, начальных навыков в программировании и информатике – нет. Каждый день она занимается 2-4 часа. Одно домашнее задание должно выполняться за 1-4 дня. Мой план состоит в том, что можно минимизировать индивидуальные объяснения, пока так и получается.



Нагло украл фотографию из Instagram

Примерный план обучения на ближайшее время (то есть самое начало) выглядит примерно так:

  • Понятие переменной, простейшие функции (min, max, abs), задачи без ветвлений и циклов.
  • Оператор ветвления, обе формы (if, if-else). Понимание областей видимости переменных, вложенные ветвления. Задачи на ветвления.
  • Операторы циклов: while и for. Задачи на применение циклов без дополнительных конструкций (то есть решаются в один цикл без ветвлений и вложенных циклов).
  • Задачи на применение циклов и ветвлений.
  • Задачи на применение вложенных циклов.

Каждый пункт соответствует одному домашнему заданию и будет содержать 10-20 задач по этой теме. Дальше по плану ожидаются массивы и строки, но до них еще только предстоит дойти.

Один из первых выводов, который я успел для себя сделать: на начальном этапе не стоит погружать в излишние детали, упрощенное или неполное понимание помогает понять основы. Например, пока Лена оперирует только целочисленными переменными (тип int), всегда ставит фигурные скобки после управляющих операторов, использует только логические && и ||, лишь примерно понимает смысл заклинания «using namespace std». Мне кажется, что после получения первоначальных навыков расширить понимание типами, дополнительными операторами и прочими подробностями будет проще.

Я надеюсь, что у Лены будет получаться и она не потеряет мотивацию к занятиям.

А как вы изучали самые основы программирования? Что хорошо сработало именно для вас?

Полный текст и комментарии »

  • Проголосовать: нравится
  • +266
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

Hello, Codeforces!

Yesterday slappy advised me to stop writing problems. I will not listen to his advice and will not stop coming up with new problems. Moreover, the idea of problem 1118C - Palindromic Matrix is mine, and I do not consider it bad or unsuccessful.

IMHO, this is a good example of a problem, where an sloppy (almost slappy) implementation leads to a casework, duplication of code and a lot of formulas. On the other hand, a well-turned implementation is devoid of all these drawbacks and easy to write. It seems to me that such feedback about the problem is something of a Dunning-Kruger effect.

In general, this is an important skill of the developer to write such code, which solves the problem reliably, concisely and is not dirty. And if your code smells bad, then instead of the shaming the authors, I urge you to think "can I write a solution to this problem better?". Good way is to read solutions of other participants. You can choose short implementations from experienced participants. If you focus on learning, rather than just participating for fun, this should be the rule: read solutions of other participants (better experienced, choosing short codes or extremely efficient) and learn. The fact that you got “Accepted” does not mean that you have nothing to learn with this problem.

Here is the explanation of my solution which was written in ~10 minutes. Please, read the problem 1118C - Palindromic Matrix if you don’t know the statement. This problem is just a generalization of string palindrome constructing problem on 2D.

In general case there are 3 types of elements of a matrix (I didn’t spend to much time on drawing, the image is not perfect):

Each element in the blue area has 4 equal copies (itself and 3 additional symmetric cells). Each element in the yellow area has 2 equal copies (itself and 1 additional symmetric cell). And the single central cell (the green area) has only the single copy (itself). The yellow and green areas are absent in case of even n.

It means that you can fill the matrix with a greedy approach. At first process the blue area: for each cell take any value with number of occurrences at least 4 and fill the cell and its copies. After it process the yellow area (if any): for each cell take any value with number of occurrences at least 2 and fill the cell and its copy. Finally, process the green area (if any): take any value with number of occurrences at least 1 and fill the cell and its copy.

Easy to see that each time you can take a value with the greatest number of occurrences, so I used priority_queue<pair<int,int>> to maintain values ordered by number of occurrences. The first item in a pair is a number of occurrences, the second item in a pair is value itself. To construct such priority_queue q just use simple code like this:

map<int,int> cnts;
forn(i, n * n) {
    int val;
    cin >> val;
    cnts[val]++;
}
for (auto [key, value]: cnts)
    q.push({value, key});

To implement the rest of code, use simple function to reflect a position to the symmetric (in 1D):

int rev(int i) {
    return n - i - 1;
}

Now the main part of the code is: iterate over blue, yellow, green areas and put values in the matrix (consider all symmetric copies in together):

int m = n / 2;
forn(i, m) // blue area
    forn(j, m)
        put({{i, j}, {i, rev(j)}, {rev(i), j}, {rev(i), rev(j)}});
if (n % 2 != 0) {
    forn(i, m) { // yellow area
        put({{i, m}, {rev(i), m}});
        put({{m, i}, {m, rev(i)}});
    }
    put({{m, m}}); // green area
}

The function put takes a sequence of symmetric positions and put same values on them:

void put(vector<pair<int,int>> pos) {
    auto t(q.top());
    q.pop();
    if (t.first < pos.size()) // can’t do it?
        no(); 
    for (auto [i, j]: pos)
        a[i][j] = t.second;
    t.first -= pos.size();
    q.push(t);
}

So the complete code is very simple and contains only two if statements (almost no casework!).

Complete Code

MikeMirzayanov

Полный текст и комментарии »

  • Проголосовать: нравится
  • +329
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет, Codeforces!

На календаре уже февраль 2019-го, а это значит, что с отчётом за 2018-й год я припоздал. Приболел, разъезды — и вот результат. Лучше поздно, чем никогда! Давайте вспоминать прошлый год.

В 2018-м году к коллективу координаторов присоединились cdkrot, 300iq и arsijo. Работу координаторов возглавляет (и является координатором координаторов) KAN. Я очень надеюсь, что более размеренный график подготовки раундов большим коллективом координаторов даст лучше вникать задачи. Основные нововведения в платформе реализованы мной и разработчиками kuviman, fcspartakm, MaximShipko. Большую работу по организации мероприятий и рассылке призов оказала gKseni.

Отдельное спасибо авторам задач и тестерам. Именно ваш контент заряжает сообщество жизнью и объединяет всех нас. Спасибо вам за задачи!

А теперь подведём итоги 2018-го года.

Партнёрские мероприятия

Мы рады проводить вместе с компаниями или для компаний соревнования по программированию. Уверен, это отличный способ поддержать сообщество молодых программистов и найти талантливых кандидатов. Вот список наших основных партнёров этого года:

  • Telegram и лично Павел Дуров уже много лет поддерживают деятельность Codeforces, каждый регулярный раунд проводится с их помощью, спасибо!
  • VK, VK Cup — командное соревнование для молодых русскоязычных программистов с серией отборов и финалом в Санкт-Петербурге
  • Mail.Ru, Mail.Ru Cup — открытое индивидуальное соревнование по программированию, состоит из нескольких этапов, Технокубок — открытая олимпиада для школьников
  • Harbour.Space University — серия образовательных раундов, отбор в летнюю школу Tech Scouts
  • Lyft — двухуровневое соревнование с финалом в штаб-квартире Lyft (Калифорния) и интернет-трансляцией финала
  • Avito, Avito Code Challenge и Avito Cool Challenge — открытые партнёрские раунды, ориентированные на широкую международную аудиторию
  • Microsoft, Microsoft Q# Coding Contest — необычное соревнование по квантовым вычислениям
  • AIM Tech — открытый партнёрский раунд, ориентированные на широкую международную аудиторию
  • Huawei — исследовательское соревнование (марафон) с элементами использования машинного обучения
  • IQ Option — раунд в качестве корпоративного тренинга

Полный текст и комментарии »

  • Проголосовать: нравится
  • +871
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, перевод, По-русски

Привет!

Я всегда радуюсь и это важно для меня, когда бывшие участники олимпиад предлагают свою помощь сообществу и поддерживают развитие соревнований по программированию. Вот и сейчас я спешу поделиться новостью, что благодаря поддержке XTX Markets и личному участию Юрия Бедного и Александра Герко в 2019-м году мы запускаем новую линейку раундов Codeforces Global Rounds. Ура!

Как и многие из вас, я ранее ничего не слышал о XTX Markets, но, открыв википедию, удивился и порадовался успехам компании. XTX Markets — один из крупнейших электронных маркетмейкеров. Я мало понимаю в финансовом секторе, но цифры по доле рынка в международном и европейском масштабах говорят сами за себя.

Итак, в 2019-м году при поддержке XTX Markets будет проведено 6 раундов новой линейки Codeforces Global Rounds. Это будут общие раунды для двух дивизионов из 7-9 задач в каждом. Продолжительность раундов будет составлять 2-3 часа, в зависимости от количества и сложности задач. Все раунды будут рейтинговыми для всех участников. На каждом таком раунде будут разыгрываться 50 фирменных футболок, а также мы будем рады подарить футболки всем авторам и тестерам задач.

Я буду очень рад совместной работы Codeforces с лучшими авторами задач. Надеюсь, что инициатива XTX Markets позволит проводить интересные яркие раунды, которые порадуют участников сообщества! У нас есть возможность выплачивать удвоенный гонорар $800 за подготовку полного комплекта задач (возможно, для таких раундов мы будем собирать задачи от разных авторов).

Первый Global Round состоится совсем скоро — старт 07.02.2019 16:35 (Московское время). Надеюсь, он вас порадует!

MikeMirzayanov

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1206
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет, Codeforces!

Закончился первый тур олимпиады. Надеюсь, что скоро участники поделятся своими впечатлениями от задач и результами. В этом году впервые Codeforces участвовал в проведении этой олимпиады — 12 регионов принимали участие на нашей платформе. Есть кто из участвующих? Как впечатления? Кажется, всё работало без сбоев. Очередей не было.

Дорешивать задачи можно в Тренировках по ссылке 2018-2019 Всероссийская олимпиада школьников по информатике, региональный этап, 1 тур.

UPD: Закончен второй тур. По ссылке Тренировках можно дорешивать и задачи 2-го тура: 2018-2019 Всероссийская олимпиада школьников по информатике, региональный этап, 2 тур.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +146
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет!

Самая короткая новость на Codeforces. Я добавил поддержку компилятора Microsoft Visual Studio C++ 2017. Решения компилируются вот такой командной строкой cl /std:c++17 /W4 /F268435456 /EHsc /O2 /DONLINE_JUDGE %1.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +79
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-русски

Привет!

Совсем скоро состоится региональный этап РОИ. В этом году Codeforces присоединяется к проведению, и некоторые регионы будут писать олимпиаду на базе Codeforces.

Для проведения олимпиады мной были пописаны некоторые элементы функциональности Codeforces и Polygon. Теперь, в Полигоне можно не только устанавливать политики начисления баллов для групп тестов и их зависимости, но и рекомендуемую для тестирующей системы политику отображения информации о тестировании. Как и на Всеросиийских олимпиадах, поддержаны следующие политики:

  • NONE — не показывать в отчете информацию о тестировании группы,
  • POINTS — показывать только баллы за группу тестов,
  • ICPC — показывать вердикт до первого упавшего теста (включительно),
  • COMPLETE — показывать все вердикты (в этом случае группа тестируется полностью, даже если оценивается только её полное прохождение).

В тестировании на Codeforces было поддержано прерывание групп тестов и пропуск их тестирования, если это можно сделать в соответствии с политиками групп.

Кроме того, для организаторов регионов был разработан отдельный интерфейс, который сделает проведение олимпиады простым и комфортным.

Приглашаю всех интересующихся присоединиться к открытому пробному туру региональной олимпиады по адресу https://roi20p.contest.codeforces.com. Просто используйте свой аккаунт Codeforces, чтобы зайти на этот подсайт и примите участие в пробном туре. Обратите внимание, что каждое условие содержит описание политик начисления баллов и отображения отчетов. По задачам можно задавать вопросы (тестируем всё!), но я не могу обещать, что смогу ответить на них.

Если что-то работает неправильно, непредсказуемо или неудобно, то пишите комментарий под этот пост.

Спасибо!

UPD 1: Добро пожаловать в сезон 2020-2021 школьных олимпиад. Пост обновлён, чтобы ссылаться на открытый пробный тур для регионального этапа этого года. Приглашаю всех интересующихся присоединиться к открытому пробному туру региональной олимпиады по адресу https://roi21p.contest.codeforces.com.

UPD 2: Добро пожаловать в сезон 2021-2022 школьных олимпиад. Пост обновлён, чтобы ссылаться на открытый пробный тур для регионального этапа этого года. Приглашаю всех интересующихся присоединиться к открытому пробному туру региональной олимпиады по адресу https://roi22p.contest.codeforces.com.

UPD 3: Добро пожаловать в сезон 2022-2023 школьных олимпиад. Пост обновлён, чтобы ссылаться на открытый пробный тур для регионального этапа этого года. Приглашаю всех интересующихся присоединиться к открытому пробному туру региональной олимпиады по адресу https://roi23p.contest.codeforces.com.

UPD 4: Добро пожаловать в сезон 2023-2024 школьных олимпиад. Пост обновлён, чтобы ссылаться на открытый пробный тур для регионального этапа этого года. Приглашаю всех интересующихся присоединиться к открытому пробному туру региональной олимпиады по адресу https://roi24p.contest.codeforces.com.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +105
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

Congratulations to all the new 2019 year! At this very moment you can make an important wish. Done? I wish it to be fulfilled!

I wish you to become better in the new year, to think better and to meet less often with bugs and mistakes. Let all your solutions be fast, effective and correct!

Later, I will compile statistics for 2018 and publish in the form of an annual report

Now I'd like to remind you most voted posts of 2018. Here is the list of the top 15:

Happy New Year!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +710
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, перевод, По-русски

У вас же уже новогоднее настроение?

А у нас традиционные подарки!

Смена хэндла

В Новый год мечты сбываются: вы можете сменить хэндл до 10-го января!

Открыта традиционная новогодняя акция. Спешите! Только до 10-го января вы можете изменить свой хэндл абсолютно безвозмездно, то есть даром! Сменить хэндл можно лишь единожды. Обратите внимание, что откатить изменения или изменить хэндл еще раз вы сможете только через год. Будьте внимательны и осторожны со своими желаниями! :) Хэндл можно сменить либо на совсем новый (ранее никем никогда не используемый), либо на тот, который у вас был когда-то ранее. Кстати, ссылки на ваш профиль с прошлым хэндлом работать не перестанут — будет автоматический редирект со старого хэндла на новый. У нас все ходы записаны!

В этом году улучшение — если вы приняли участие в 10 или более раундах, то можете забрать хэндл у неактивного пользователя. Если пользователь заходил на сайт в отрезок времени не более 3 месяцев, это всё было до 2015-го года, поучаствовал не более чем в одном контесте, не написал комментариев, личных сообщений и еще пара похожих требований, то у него можно изъять хэндл. У него хэндл будет автоматически сменен на похожий, ему отослано письмо с информацией. Если у вас не получается сменить хэндл, значит какое-то из условий не выполняется. Пожалуйста, не просите меня что-то предпринять. Я не Дед Мороз.

Для смены хэндла нажимайте в профиле "Настройки", затем "Хэндл", а потом внимательно читайте всё то, что написано.

Касательно необдуманных хэндлов я всегда вспоминаю такую историю. Мне как-то написал пользователь с просьбой: "Прошу сменить мой хэндл с I_love_Valya на I_love_Sveta, так как Валю я больше не люблю..."

Новогодний маскарад цветов и званий

В настройках профиля появился традиционный волшебный раздел. С Новым годом!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1044
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

Hello,

We have some technical issues for operating with recent problems. If you created a gym/mashup (today or yesterday), it is possible that its submissions are not visible. I'm working on it. Probably, today night it will be a planned maintenance shutdown to fix it.

I think it will not affect Educational Codeforces Round 55 (Rated for Div. 2).

Mike.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +160
  • Проголосовать: не нравится

Автор MikeMirzayanov, 6 лет назад, По-английски

Here are merged results of Mail.Ru Cup 2018 Round 1, Mail.Ru Cup 2018 Round 2 and Mail.Ru Cup 2018 Round 3 according to the GP100 scores (see the announcement for the details https://codeforces.net/blog/entry/62355). Best two contests give the summary score of a participant. This table is unofficial yet. But anyway... congratulations to the winnerzzzz!

Place Contestant = Round 1 Round 2 Round 3
1 mnbvmar 1497 1000 497 29
2 V--o_o--V 1281 575 575 706
3 Radewoosh 1265 265 1000
4 aid 1204 204 1000 142
5 LHiC 1203 497 706 226
6 Um_nik 997 706 291 235
7 ksun48 788 291 497
8 SpyCheese 742 371 371 265
9 RAVEman 619 19 176 443
10 scott_wu 614 307 307 307
11 ch_egor 575 575
12 JustasK 538 192 346
13 budalnik 531 277 254 122
14 Lewin 515 443 72
15 al13n 477 186 62 291
16 tourist 443 443
17 isaf27 426 277 149
18 I_love_Tanya_Romanova 422 204 218
19 natsugiri 419 48 371
20 Reyna 405 244 54 161
20 Golovanov399 405 403 2
22 ecnerwala 403 403
22 Endagorion 403 403
24 ezLadder 389 145 68 244
25 jcvb 384 198 186
25 Kostroma 384 218 46 166
27 Errichto 382 36 346
28 zemen 371 226 32 145
29 kostka 370 45 325
30 uwi 364 153 211 131
31 BigBag 355 198 157
31 dreamoon_love_AA 355 265 90
33 kmjp 353 70 218 135
34 dotorya 346 346
35 Zhukov_Dmitry 337 235 102
36 jqdai0815 325 325
36 Petr 325 325
38 krijgertje 319 181 138
39 SYury 313 78 235
40 Marcin_smu 309 138 171
41 mjhun 308 110 198
42 KrK 294 102 192
43 saketh 286 181 105
44 Benq 277 277
45 mmaxio 270 16 254
46 Nikitosh 261 142 119
47 irkstepanov 258 254 4
48 AndreySergunin 251 166 85
49 qwerty787788 244 244
50 Mediocrity 242 135 107
51 sevenkplus 236 226 10
52 gamegame 229 192 37
53 voover 227 56 171
54 Xellos 225 72 153
55 Anadi 224 43 181
56 eatmore 218 138 80
57 neal 211 211
57 ainta 211 211
59 MrDindows 204 204
60 znirzej 190 122 68
61 244mhq 186 186
62 Aeon 182 161 21
63 maroonrk 176 176
63 snuke 176 149 27
63 yarek 176 176
66 molamola. 171 171
67 Shef 166 166
68 mHuman 163 21 142
69 zeliboba 162 34 128
70 imeimi 161 161
71 KMAASZRAA 160 97 63
72 Alex_2oo8 157 157
72 wxy_z 157 157
74 JiK 154 128 26
75 ilyakor 153 153
76 yashChandnani 152 92 60 45
76 amethyst0 152 135 13 17
78 gop2024 151 52 11 99
79 kaldiuo 150 90 60
80 function348 149 149
81 fgcos 148 107 41
82 receed 145 145
83 Subconscious 143 63 80
84 Merkurev 131 131
84 anta.baka 131 131
86 never_giveup 129 116 13
87 kektus 128 128
88 zscoder 127 116 11
89 I_love_tigersugar 126 34 50 76
90 Shayan 125 125
90 majk 125 125
90 atacan 125 125
93 kpw29 122 122
93 WA_TLE 122 122
95 palayutm 121 87 34
96 queria_ser_abella 119 119
97 cookiedoth 117 107 10
98 shaviava 116 116
99 bbatti93 114 22 92
100 Swistakk 113 113
100 boook 113 113
100 Fdg 113 113
103 rui-de 111 87 24
104 ngkan 110 110
104 liujunhao 110 110
106 pparys 105 105
106 ShadowLight 105 105
108 Quang 104 14 90
109 orz 102 102
110 rtilikay 99 99
110 Motarack 99 41 58
110 sy_chen 99 99
113 hank55663 97 97
113 MicGor 97 97
115 TLEwpdus 94 94
115 mrscherry 94 94
115 998kover 94 94
118 shadowatyy 92 92
119 PoDuReM 87 4 83
119 ll931110 87 87
121 tribute_to_Ukraine_2022 86 72 14
122 dario2994 85 85
122 cephian 85 85
124 lezdzh 83 83
124 ThePilgrim 83 83
126 fsouza 82 56 26
127 kimden 80 80
128 ei133333 78 78
128 adedalic 78 78
130 papa3 76 76
130 Coder 76 76
132 tfg 74 74
132 agutowski 74 74
132 hloya_ygrt 74 74
135 ---------- 72 72
136 Rzepa 70 70
136 maximumSHOT 70 70
138 waynetuinfor 68 68
139 IndianICPC-Joke. 66 66
139 kefaa 66 27 39
139 NurlashKO 66 66
142 nanachi 63 63
143 ToTLeS 62 62
143 ismagilov.code 62 62
145 riadwaw 60 60
146 nhho 58 58
146 Noam527 58 58
148 131131yhx 56 56
149 qoo2p5 54 54
149 alex9801 54 54
151 Sert 52 52
151 mariand 52 52
151 YaKon4ick 52 52
154 radoslav11 51 29 22
155 Chameleon2460 50 50
156 Damon 48 48
156 archie_fake 48 48
156 mango_lassi 48 48
159 snek_Case 46 46
160 Wild_Hamster 45 45
160 Holidin 45 2 43
162 saba2000 43 43
163 Farhod 41 41
164 walnutwaldo20 39 39
164 Alexandr_TS 39 39
166 fmqjpt 37 37
166 wa1tz719 37 37
168 Egor 36 36
168 orzwaz 36 36
170 f.bialas 32 32
170 LoneFox 32 32
172 .ckodser. 31 31
172 Kaban-5 31 31
172 nigus 31 31
175 kyleliu 29 29
176 mateusz 27 27
177 -is-this-fft- 26 26
177 NBAH 26 26
179 icecuber 24 24
180 chemthan 22 22
181 kalinov 21 21
182 kr_abhinav 19 19
182 Arterm 19 19
184 a.piasta 17 17
184 Lollipop 17 17
186 sava-cska 16 16
186 jinzhihan 16 16
188 Weeeee 14 14
189 sqrtdecompton 13 13
190 test616.cpp 11 11
191 shoemakerjo 10 10
192 tamionv 8 8
192 bazsi700 8 8
192 guille 8 8
195 spiderg 7 7
195 kalimm 7 7
195 albertg 7 7
198 muratt 5 5
198 AlexLuchianov 5 5
198 glebushka98 5 5
198 teleport 5 5
202 Dmitriy.Belichenko 2 2
203 .I. 1 1
203 Diego 1 1
203 _LeMur_ 1 1

Полный текст и комментарии »

  • Проголосовать: нравится
  • +69
  • Проголосовать: не нравится