Guide to effective coding with Codeforces
Tags: beginners, codenewbie, productivity
Published: 2021-06-03 10:56:09

Codeforces is one of the most popular platforms for practising competitive programming, world’s top programmers participate in contests held here. 

I have been participating on codeforces for about two years now, and I can surely say that it has given me the best learning experience and lots of fun.

Writing from experience, beginners go through lot of trouble to understand how to practice on Codeforces and excel in competitive programming. Today, I am going to share a quick guide to the website’s UI, and strategies to practice CP.

<hr>

# Home tab

> Homepage of CF, contains details of new challenges, their tutorials, some good recent blogs.

![Screenshot from 2021-06-03 15-35-36](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fmc4sbgtqdwcjg1khng.png)

 
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. You can't participate in a challenge without participation.

![1_EvztGS6Qxyj9ksBL2My_qw](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x9aqo1lk3f7sydxlslym.png)

**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.

![1_83neuOlPflQCrXM_zRNjzA](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mj3h7h4meqqho9nl7o41.png) 

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 practising thousands of questions from various topics.

![1_tU7_9RcViaZUDgk8iswfvg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avhagvtgso0dhz9shiha.png) 

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.

![1_wfDacfcPQ2GHCtVI4gtagA](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdt4qo3mmpgxvb0wfvva.png)
 
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.

# User’s profile

> When you click on someone’s username then you are directed to their profile.

A user profile tells everything about a user’s life on CodeForces. Everything is open; details of all their contests, links to all their blogs, a little about their institution and where they belong to.

![1_z2g5bBaBfVWstz3VZJNG_A](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yv6fvwvr68tlzy0ghgr3.png) 

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 about a year now, 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

![1_tjXAP34w9jTU7aMe_ZiHXg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/csmeudnutzgv0ia7tulh.png)
 
- **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](https://cfviz.netlify.com/).

- **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](https://www.stopstalk.com/).

<hr>

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](https://blog.usejournal.com/programming-begineers-guide-db6dae418ba7) to it.

> Stay healthy, Keep learning, Keep coding!