July 13, 2023 (11mo ago)

Resources for Competitive Programming

Photo by Emile Perron on Unsplash

What is CP?

Wikipedia states, "Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications."

Why do CP?

There can be several reasons do to CP, like:

  • to compete with others
  • to improve your proficiency in programming
  • to improve your problem-solving skill

How to start CP?

First of all, you need to know English to read and understand the problems. If English is not your first language, you may face some difficulties because generally, a problem contains some story and we have to pick the essential details from it. But if you understand this post, then I think you're good to go.

Now you need to pick a programming language, you can do CP in any language, but most sport programmers use C++ followed by JAVA and Python. I would recommend C++ because of its fast speed and the availability of resources for it.

Now you're ready to dive deep into competitive programming.


1. Online Judges

First, let's look at the different sites where we can do CP.

2. Competition Schedule

At any given time many competitions are running across various sites, I've mentioned only a few, so to look at all the different competitions that are running we can use CList.by website. It shows us all the currently running and future contests across all the sites. You can log in to filter out only the specific sites whose updates you want to see. Also, you can quickly add these in your calendar too.

3. Trackers

One must also track how they're doing in all the competition that they're participating in. Also one should know how many problems they're solving and other statics like that.

  • StopStalk: Use this for tracking your record across all the sites mentioned above(except vii).
  • Codeforces Visualizer: Tracks your Codeforces profile & can be used to compare too. The statics are more detailed.
  • kenkoooo: Tracks which problem you've done on AtCoder.

4. Problem Recommenders

To practice effectively, you need to select good problems. Many times we keep practising similar problems and it's a big waste of time. So we can choose good problems from these problem sets or problem recommenders.

5. Probable pathway

Sometimes people confuse in which way they should practice the different topics. For this, they can follow:

6. Great General Resources

Some places where you can search for whatever you want to learn about:

7. Books

Some people like learning from books instead of online. For them these are a real boon:

8. YouTube

Some people like to watch and learn, so for those people, I have a few YouTube channels that they might want to subscribe to:

Parting Words

I've shared a lot of resources but still, I may have missed some good resources. Please do mention them and I'll add them in.

Also, one important thing that I want to share is that, please follow any single resource and grind it out!

Doing easy parts of all the different resources won 't help!!