nekiter / RoadToRedCoder

Competitive programing: A diary from pupil training to became a red coder @codeforces

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Road to red coder

This is a repository that I use as diary to my journey from puppil to red coder at CodeForces.

Wait, what? Codeforces? Red coder? Puppil? Okay, so Codeforces is a website that provides contest for competitive programing and it has a ranking based on elo rating.

"When the contesters take part in Codeforces contest, they raise or lower their rating that reflects their ability to solve the tasks. The rating is a modification of Elo rating, several details can be read in a fuller form. According to the rating, the contestants are split into two divisions: the second one (the weaker one, amateurs) and the first one (the stronger one, pros). The contestants who don't take part in contests and those whose rating is below 1900 belong to the second division. The 1900+ rating means that you're part of the first division. Usually two types of contests are held on Codeforces: for the second division contestants (the first division contestants can take part there out of competition) and for both divisions. The first contest type contains simpler and learning-oriented tasks."

-- Codeforces help section

At the following table it's possible to see the titles for each rating at the rakning:

Relation title and rating from codeforces

My goals

  • Became a Specialist
  • Became an Expert
  • Became a Candidate master
  • Enter the first division (get 1900+ at rating)
  • Became Master
  • Became an International master
  • Win at least one T-shirt (some contest gives T-shirts for the top competitors)
  • Became a red coder

The process

  • 2020/06/10 (First day) (30 minutes) I started to do some basic problemset with difficulty 800 using C/C++, and read the book: Competitive Programmer’s Handbook by Antti Laaksonem.

  • 2020/06/11 (60 minutes) Just solved some problems, getting used to C++.

  • 2020/06/12 (30 minutes) I solved some problems, I feel that I'm searching too much how to handle string on C++, I'll focus one day of the next week on that.

  • 2020/06/13 (135 minutes) I decided to be one of the participants of Codeforces Round #649 (Div. 2) even knowing that I was not ready, I tried to implement a recursive logic for the problem A, but it was O(n^2) and I couldn't manage to pass some test cases on the time needed, during this week I'll review how other people solved this problem. Update: After the contest I was thinking too much on the first problem and then I decided to read the editorial, my first thought was really close, I don't know why I've abandoned it, but at least now I managed to implement a solution that is O(n).

  • 2020/06/14 (something around 120 minutes) I've invested some time watching the weekly video from programmation club of UTFPR, it was really long and I don't like that much learn as a passive listener, but it gave me some topics that I need to study, because of that I'm not sure if it's worth it to keep following. With that said I want to study some topics on next week:

    1. Read about strings on C++, sometimes I know what I need to do, but I'm losing too much time search trivial stuffs like "compare strings".
    2. Read and do some exercices related with DFS, it looks pretty simple but I never study it.
    3. Read, do some exercices and try to search some applications for segment trees.
    4. Solve the problem Grand Prix da Nlogônia from UBI19 it's a problem that uses knowledge from DFS and segment trees, showed on the programmation club last week.
  • 2020/06/15 (60 minutes) I've spent some time doing other exercice from programmation club of UTFPR, it looks like an linked list but I'm not sure what I'm doing wrong, I'll watch the second part of the video, and then continue with my normal study flow, I still have some doubts about this club and the invested time on it.

  • 2020/06/17 (45 minutes) For now I decided to do some codeforces problemset during the week when I have a lower amount of time, and during the weekend I'll give a chance to the programmation club of UTFPR, today I just made some problems and most of then was related with string I still don't feel confident with that, but at least I'm getting some experience.

  • 2020/06/18 (45 minutes) Today I continued doing some easy problems on codeforces (dificulty 800), I've solved 5 exercices in 45 minutes so probably this dificulty is too low, I only had to think about one problem that I noticed that was a arithmetic progression, and I wasn't able to remember the closed form of the sum of it, but I searched it and solved the problem. Tomorrow I'll try to get this formula from my head on my lunch time at work. Today I also noticed that the book I was reading has all the content that I've saw on programmation club of UTFPR and since I learn better by myself I'll just focus on increase my skill doing problems and reading this book, following the rule of 5% (5% of my time training will be reading). Tomorrow I'll start problems with dificulty 900.

  • 2020/06/22 (60 minutes) I started to do some exercices with dificulty 900, most of then was pretty easy, but the last one took something around 15 minutes, I managed to do it, but after it I saw some orange guys solution and it was really smaller, IDK if I should care about it already. Besides that last days I didn't found time to train last days, but at least I've read a litle bit and the book showed a table that is really useful it shows a estimation between the input size and the required time complexity.

Relation complexity x input

  • 2020/06/24 (60 minutes) I did some exercices with dificulty 900 again, the feeling of beeing easy stays I'm thinking about try some problems with dificulty 1000 to see which one is the better for my current experience, but during the exercices today I could notice some mistakes that I'm doing on general, I think that most of them will be solved with experience but I'll list it anyway to keep the track:

    1. I'm still struguling with some C++ basic that I'm not used to (mainly with strings).
    2. Sometimes I overthink about a problem spending more time than I should on simple answers.
    3. Sometimes I try to code before be sure about my answer, spending more time than I should on a problem.
    4. My code is too verbose, making it too long and slower to write, I don't need to mantain it, so I shouldn't spend so much time implementing it.
  • 2020/06/25 (60 minutes) Today I remembered some of my classes and programed some sorting algorithms described on the book Competitive Programmer’s Handbook by Antti Laaksonem, I know that this isn't that much worth for competitive programing since C++ already has a really good sorting algorithm implemented but it's good to remember how the basic works and also I'm trying to get used to C++ again.

  • 2020/06/28 (75 minutes) Today I joined a Div. 3 round on code forces, I could manage to solve 3/7 problems which is pretty ok, since I joined with almost one hour of contest, the problems were medium dificulty for me, so I'll look the dificilty level of those exercices then try to solve similar problems.

  • 2020/06/29 (75 minutes) Today I've read a lot during the breaks from my work, I also spent some time trying to solve problem D from yesterday contest, but no success so far, tomorrow I'll give a look on the tutorial.

  • 2020/06/30 (30 minutes) During my lunch I solved the problem D from yestarday, I had some implamentation problems, this was a 1400 dificulty, and it look a little high than I need right now (I've spent almost two hours on it, which too much time).

  • 2020/07/02 (45 minutes) I've done a exercice with dificulty 1100, it looks to fit to my current ability, I'll keep this level until it get easy.

  • 2020/07/06 (90 minutes) I've done some exercices with dificulty 1100, the last one take too much time, which mean that the level is ok (2/3 problems solved). I need to be more careful with my thoughts on papper I've spent more time on the last one because I was look for a wrong table.

  • 2020/07/07 (60 minutes) I've manage to solve the problem from yesterday, I also solved a new one, but nothing new, tomorrow I'll try to read a little bit, there's some time I don't do that.

  • 2020/07/08 (30 minutes) Just doing a exercice, for now the dificult 1100 is good for me, not to hard and not to easy, I'll just continue doing that.

  • 2021/04/06 (60 minutes) Solving some hacker rank warmup questions, I've joined a study group and it looks a great idea to get the hacker rank certification.

  • 2021/04/11 (120 minutes) Solving some hacker rank problems about strings and hashtables, those problems were choosen for the study group foucosing on the hacker rank certification.

  • 2021/04/12 (120 minutes) Studied and implemented how a hashtable works, also made a presentation to explain it to the study group.

  • 2021/04/17 (120 minutes) Just did some small exercises about lists, this weekend I want to study about heap, I've noticed that I didn't had any contact with it before.

  • 2021/04/22 (240 minutes) I've done some hacker rank exercices about heap, using a lib with the implamentation was easy to medium, but I didn't manage to implement the heap logic by myself, I'll try again soon.

  • 2021/04/26 (60 minutes) Started to study a little bit about stacks and queues. I need more pratice.

About

Competitive programing: A diary from pupil training to became a red coder @codeforces


Languages

Language:C++ 100.0%Language:Go 0.0%Language:Python 0.0%