Hi, around 3 years ago I compiled most of the Competitive Programming topics in one place here with relevant resources, templates, and problems. It got great responses, it now has 4000+ upvotes and the blog website has been visited 200k+ times! But it contained links to only 1-2 resources and problems per topic and it didn’t contain basic topics for beginners. Also, there was no way of tracking your progress.
This time I decided to improve it, by a lot. I took this project one month ago and it took me on average 6h-10h per day for the last one month to complete this project (also I was doing a full-time job). I hope it was worth it!
The new version is not just a blog, it is a full-fledged website with multiple features (I have hosted it on one of my existing websites):
- Topics: The website contains around 500 topics and tricks. Not all topics are real topics, some are useful tricks or even a problem that contains a reusable unique idea. Also, I have divided a parent topic into multiple subtopics. For example, under Segment Tree, you will find Normal Segment Tree, Dynamic Segment Tree, Persistent Segment Tree, etc as separate topics. This was needed because you should learn only one thing at a time according to your current level.
- Difficulty and Importance: Now every topic has been assigned a difficulty level as well as importance/relevance. Like, let’s say you want to learn data structures, and it would be wiser to learn Segment Tree first before learning Splay Tree because of two reasons: Segment Tree problems are more frequent than Splay Tree problems and Segment Trees are easier to learn.
- Resources: Now there will be more resources than before and ordered by which one you should go through first. I have also cited the original authors for each resource.
- Templates: More topics now have example codes.
- Problems: Mainly this part took 90% of my time. Under each topic section, now you will find a good amount of problems. For example, under Centroid Decomposition I have added 30+ problems. I have also assigned difficulty to the problems and tried to order them in a way so that you can go through them one after another in the given order. After collecting problems for all topics, it turned out that I had added a total of 3352 problems!
- Topic Filtering and Searching: Now you can filter problems by difficulty and importance so that it becomes easier for you to find topics according to your expertise. You can also search a topic by its name to quickly find the topic, for that I have added a decent custom search bar.
- Progress Tracking: You can mark the topics that you complete and also mark the problems that you solve, then the website will track your progress.
- Activity Heatmap: I have added two heatmaps: one for topic completions and another for problem solves. If you wanna see your past activities, this might be useful for you.
- Contributing System: Now you can also suggest resources, templates, and problems under a certain topic all from the website! Once you suggest a contribution, I will review it and add it to the public list.
- Beginner Friendliness: Last time the topic list was not beginner friendly. But this time I have also added all the beginner stuff in an increasing order of difficulty starting from learning data types, functions, etc. So now even if you don’t know how to code, you can follow the topic list.
- Leaderboard: A list of the top users based on the number of completed topics and solved problems.
Link to the website: smash me
To know how to follow the topic list visit the guideline page on the website. Also, keep in mind that while this list is a good place for knowing which topics exist and the resources and problems for them, you should not always do topic-wise practice. From time to time, you should solve random problems and do rating-wise practice. And of course please always participate in live contests.
Upcoming Features:
- Team View: You will be able to create a team and see which topics are covered by your team members, in which topics your team is not strong enough, etc. UPD June 4: Implemented this feature.
- Dark Mode: If there is enough interest, I can try to add a dark mode in the future.
- Feel free to suggest more features that you want.
I am pretty sure there are some inconsistencies and bugs in the website and the collected problems. Feel free to let me know about those and I will try to fix them ASAP.
A few last words: I have been doing this CP thing for around 7 years now! I will mostly retire after the next World Finals (hopefully, as we became 3rd in the last Asia West Championship). Like before, all I want to say is, please don't forget to enjoy the journey and have fun while riding the boat. Whatever you do, try to pick something you love and try to be good at that. I hope my little contribution will help you with your incredible journey.
Best wishes, my friend .