Привет, Codeforces!
Уже было много статей, связанных со скоростью реализации, но у меня проблема немного другая (хотя со скоростью тоже есть проблемы). Я часто допускаю элементарные ошибки в коде.
До того как я увлёкся олимпиадным программированием, я занимался созданием мобильных игр и приложений. Написал тысячи строк кода и считал реализацию своей сильной стороной. Но практика в соревнованиях показывает обратное — я сливаю рейтинг только из-за багов в коде.
Например, на недавнем Codeforces Round 1022 (Div. 2) я потратил 40 минут на вторую задачу, затем переключился на третью. Идея пришла практически сразу после прочтения условия, но я решил её только после пяти неверных посылок и большого количества потраченного времени. В итоге получил всего около 600 очков из 1500. Во всех посылках логика была почти та же, просто реализация оказывалась с ошибками.
Это не первый случай, когда я сливаю рейтинг из-за кривых рук.
Что вы посоветуете? Как практиковать аккуратное написание кода? Есть ли ресурсы с задачами, где основная сложность именно в реализации?









Auto comment: topic has been translated by HCCoder (original revision, translated revision, compare)
I struggle with the same issue, the advice I was given was to try and solve more CSES problems and try to "speedrun" them. Another suggestion, if you encounter an issue like this during contest, is to try to create random test cases to try to find edge cases in your code; using a tool like CPH judge makes this much easier.
Thanks for your attention!
Для начала можно просто сидеть и вдумчиво писать код при решении задач, не допуская сложных конструкций, в работе которых ты не уверен. Поначалу эту может занимать заметно больше времени, но это лучше, чем потом тратить его на debug. Ну и перечитывать весь код перед отправкой тоже неплохо.
same shit, after many times making the same mistake, i try to prove my code or give some kind of counter-tests
hope that i helped you:)
Thank you for attention.
I'm curious. So you mean you have an easier time debugging actual software than CP code? Why is that? Is it because software code is usually more straightforward than CP code?
imo it depends on who wrote the software, but usually it is
Yes. For example, in cp if you write code that reaches the hundredth test and fails, then it is still wrong. But in the code of software there is no such thing, if there are bugs, then someone will write about it, then I will fix it.
speedrunning already solved problems can help reinforce clean bug free implementation.Also try solving implementation tagged problems on Codeforces to build muscle memory and precision.Overtime this will reduce careless mistakes in contests.
Implementation in CP can't really be taught, you just acquire it as you go. Some tips that I can probably give you is:
implementationtags, or solved problems that you remembered that you struggled with implementation. Problems from Codeforces are usually not very implementation-based, so you may have to seek another source (ICPC, OI contests, etc)Могу дать свой мини совет, хоть он и достаточно наивный. Часто когда в голову приходит решение задачи, я рвусь сразу по быстрее писать код, допускаю кучу ошибок и всё... ггвп. Так что мой совет в том что перед тем как идти писать код, представь в голове наброски самых сложных частей кода и подумай как можно их сделать короче или вообще по другому реализовать их, чаще всего на это требуется пару десятков секунд, но проблем с реализацией будет сильно меньше)