The ultimate programming platform
A competitive programmer’s guide to effective coding with Codeforces
Secrets to an effective competitive coding with Codeforces and additional tools to enhance your competitive coding experience
Codeforces is one of the most popular platforms for practicing competitive programming, and world’s best programmers also participate in contests held here. I have been participating in codeforces challenges for more than a year now, and I can surely say that it has given me the best learning experience with lots of fun.
“I don’t understand Codeforces UI”
This is a very common statement that I counter with beginners and of course, I have also struggled the same about a year ago. It’s UI is strange, just a little unusual and very classic, but you will surely start to like it as you get familiar with it.
Today I am going to share a quick guide to the website’s UI, and for the sake of size of this article, I’ll only talk about important features and tools on the website, that a programmer must know.
Note: There is list of additional tools at the end of the article don’t forget to look at it, and of course, don’t jump directly at it.
Home tab
It’s the homepage of CF, and it contains details of new challenges, their tutorials, some good recent blogs.
In the right division of this page, you’ll see a countdown to the next challenge contest with a link to register for the challenge.
Yes, you have to register for the contest to participate in it. If you forget to register then you can’t participate in it.
Codeforces Blogs: This is one of the most essential parts of Codeforces, personally I have learned a lot of things from user’s blogs. Almost all professional programmer writes blog on codeforces based on their experience, they share their tricks and sometimes you might even find out really good algorithms that are hardly available on any other websites.
For eg. once I got an an error called “IDLENESS LIMIT ERROR”, which I had never heard of. I searched it over different websites but found no solution, but then when I tried to find it on codeforces blogs, I found the solution to the error within a few minutes.
There are other interesting stuff on this page but for a beginner, I’ll say, that’s all for the homepage you need to know.
Contests
This tab offers you details of upcoming contests and previously held contests.
The above image is an example of how contents are displayed, let’s break it down.
- Enter: When you enter any past contest, you get to access all questions as in practice sessions.
- Virtual Participation: This is like a virtual contest, in case you missed any contest or want to participate again. Your ratings won’t be affected by this participation, but you do get to see your rank in the rank-list generated in the live contest.
- Final Standing: It’s the final rank-list of all the participants of the contest, below which shows how many questions of that contest you solved. ( Reference image shows “5 out of 9” because that’s my data.)
There are some other sections as well, but, this is all a beginner should be concerned about.
Problemset
A heavenly tab, for practicing thousands of questions from various topics.
This is the tab that you are going to use most, and yeah, I have tried my best to explain it all.
The above image is an example of how the problems list is displayed, let’s break it down.
- Question code: Like you see in image “1320 A” or “1313C1” these are question codes. Sometimes editorials use question code only instead of full names, so don’t panic over there.
- Name: Obviously question name is pretty clear to you, but look, on the right side of this column, there is a grey text that tells topics tags of questions. These tags sometimes serve as a hint to the solution so if you don’t wanna see them, you may turn that off from setting in the right division.
- Column 3: This column gives you an option to mark that question for any future reference. This column also tells which questions are solved, solved ones are colored and unsolved are left blank.
- Column 4: It tells you about the level of the question in the form of rating, greater the rating, harder the problem.
- Column 5: It’s a list of all solutions submitted for that solution. Also, if you click on the head of this column, questions get sorted based on submission.
Next is Filter Section, it is an important section in the right division of the page. Here you can filter the question list based on your choice.
For example, I have given difficulty from 1100–1200 and added basic question tags, which I personally believe every beginner should follow.
Different ways to submit solution on CF
You can either directly code on the CF editor, or you may upload solution as a file.
If you want to type your code directly on the CF editor, then you can click on SUBMIT option on the upper left corner of the question page, as shown in the image below and you can other options for assistance.
Or you can use your offline editor, prepare a solution and simply upload the program file from Submit? section in the right division as shown below.
Other user’s profile
When you click on someone’s username then you are directed to his profile.
A user profile tells everything about a user’s codeforces life.
Everything is open; details of all their contests, links to all their blogs, a little about their institution and where they belong to.
Obviously, most of this is pretty clear, I won’t go on every detail, but of course the useful ones.
- Add Friend: Right next to the username, you see a star, that’s an option to add someone as a friend. By adding them as a friend, you can see your friends in rank-list of every contest.
- Send message: This is really a useful option, you can drop a private message to a user and have a conversation regarding any question.
- Rating names: This might be a little new for beginners, but on CF, coder’s profile is clubbed based on their rating. Like for tourist it’s Legendary Grandmaster, which is super hard to achieve.
How to practice efficiently?
Problemset tab is dedicated for practice purpose, but there are different strategies to use this set of problems for efficient growth. I am going to share strategy that I have been using for past 6 months, and it has worked wonders for me.
These are some of the basic topics that are building blocks of a competitive programmer:
- Greedy
- Brute Force
- Sorting
- Binary Search
- Two pointer
- Maths
- Combinatorics
What I do is, I choose any two of them, based on my skill-set and filter out questions based on these topics. To filter out questions, you can use filter section (explained in Problemset section), and give appropriate rating interval and start practising these questions.
Based on my experience, I’ll suggest to try Greedy+ Implementation in rating interval of 1000–1200, for absolute beginners.
Other special tools for Codeforces
These tools will help you to grow faster
- Codeforces Visualizer: It’s an open hosted visualizer for codeforces accounts that tells you complete details of a user on codeforces, such as: his rating change, no. of questions attempted by user, topics wise distribution of user’s practice, etc. Like to visualizer is here.
- Rating predictor: It’s a browser extension, available for most of the popular browser, it predicts rating changes live at the contest. It’s not 100% correct, but mostly accurate.
- StopStalk: It’s another platform like codeforces visualizer, but the difference is that it creates leader-board for your friends in your institution and you can see each and every thing they are doing on different programming websites such as: Codeforces, Codechef, UVa, etc. Link to stopstalk is here.
As for the beginner, now you can easily find your way with CF’s UI, if you have any doubts put that down in the comment section, I’ll respond to it as soon as I see it.
If you are an absolute beginner and you want to get detailed insights of how to get into programming, then check out my other article where I have covered everything with beginners perspective, here is link to it.
Stay healthy, Keep learning, Keep coding!
Thank you so much for reading this article and best wishes for a long, happy, and purposeful life.