Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.

How do I start competitive programming, and what should I learn at each Codeforces rating?

Tauseef Fayyaz

Answered by Tauseef Fayyaz

Asked 11 timesUpdated 28 Sept 2026
Topics
Short answer

Pick C++, learn the STL and how to read constraints, then take part in a contest every week and upsolve afterwards. Under 1200, practise implementation, sorting, greedy and basic maths. From 1200 to 1600, add binary search on the answer, prefix sums, BFS, DFS and simple DP. From 1600, add DSU, segment trees and harder DP.

What people tell me

I am in my first years of a computer science degree and I keep hearing about Codeforces and ICPC from seniors. I have solved some easy problems, but I do not know what to study next or in what order, and every list I find online has hundreds of topics. I get stuck on the second or third problem in contests and my rating barely moves. I want a plan that tells me what matters at my level and what can wait.

A composite of the messages behind this question, with personal details left out.

Key takeaways

  • Choose C++ and learn the parts of the STL contests use: vectors, sort, set, map and priority_queue.
  • Read the constraints first: they tell you which complexity, and so which technique, to aim for.
  • Study the topics for your rating band and ignore the rest for now.
  • Take part in one contest a week and upsolve the first problem you missed.
  • Judge progress over months, not one round: ratings are noisy.

Treat it as a sport, not a syllabus

Competitive programming is a sport: you solve algorithmic problems against a clock, the judge tells you instantly whether you are right, and a rating tracks your level. Like any sport, you improve by playing regularly and reviewing your games, not by reading every textbook first. The long topic lists online are real, but most of those topics do not matter until you are much stronger. At every level, a small set of ideas decides most of your results.

Set up once

  1. Choose C++. Python and Java work for easy problems, but most contestants use C++ because it is fast and its standard library (the STL) has everything contests need. You do not need all of C++: vectors, pairs, sort, set, map, priority_queue and a few algorithms cover a long way.
  2. Write a short template you can type from memory, with fast input and output.
  3. Learn to read constraints. A judge runs very roughly 10^8 simple operations per second, so n up to 2 * 10^5 means you need about O(n log n), while n up to 20 hints at trying every subset. The competitive programming cheat sheet has a table for this.
  4. Make accounts on Codeforces and AtCoder.

What to learn at each rating

These bands use Codeforces ratings. They are typical patterns, not strict rules.

RatingWhat most problems needWhere to practise
Under 1200Careful implementation, simulation, brute force on small limits, sorting, simple greedy, strings, parity and gcd observations, long long where sums get bigDiv. 3 and Div. 4 rounds, early AtCoder Beginner Contest problems, CSES Introductory Problems
1200 to 1600Binary search on the answer, prefix sums, two pointers, greedy you can justify, constructive problems, BFS and DFS, simple DP, sieves and modular arithmeticDiv. 2 B and C, CSES Sorting and Searching and Graph Algorithms
1600 and aboveDP in many forms, DSU, Fenwick and segment trees, shortest paths, LCA, combinatorics with modular inverses, harder constructive and interactive problemsDiv. 2 D and E, Div. 1, AtCoder Regular Contests, the Educational DP Contest

The honest part: under 1200, the problem is rarely a missing algorithm. It is misreading the statement, an edge case like n = 1, or an int that overflowed. Getting faster and cleaner on easy problems moves your rating more than learning segment trees early.

The routine that actually works

  • One contest a week, rated or virtual (a replay of a past contest with its timer).
  • Upsolve after every contest. Take the first problem you could not solve and solve it the next day. Read only the first hint of the editorial if you are stuck, then close it and write the code yourself. This is where most improvement comes from.
  • Topic practice on other days, with problems about 100 to 200 points above your rating.
  • A brute force when unsure. Before submitting a greedy you are not sure of, write a slow, obviously correct version and compare them on small cases.

An hour most days beats a whole weekend once a month.

Resources that are enough

Keep it in proportion

Your rating will go down sometimes; everyone's does. Judge your progress over three months, not one round. And do not use AI tools during rated contests: Codeforces restricts them, and your rating only helps you if it measures your own thinking. Outside contests, an AI that asks you questions and gives hints is a fine study partner.

The competitive programming roadmap turns all of this into stages for your level, from C++ basics to ICPC team play. It goes beyond the DSA roadmap, which is a good place to start if data structures are new to you. If you like the thinking but not the contests, that is fine too: read I enjoy technology but hate competitive programming.

If you want a plan built around your current rating and hours, join Sefism and, as a member, book a 1:1 session with me.

Was this answer helpful?

Ask your own

Your situation is not quite this one?

Members get written answers to their own questions, a roadmap built for them and feedback on their projects. Early access is open: sign up and your account is active shortly after. Prefer to talk? A free call works too.

Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.

More questions people ask

All questions

Employers rarely require a specific brand. They expect you to use an AI coding assistant well (in the editor and in the terminal), to review and test what it produces, to call an LLM API in a small feature, and to explain when you would not use AI. Pick one assistant, learn it properly, and show judgement in your projects.

Asked 14 timesRead the answer

Yes, but for a different reason than before. AI can produce a sorting function; it cannot tell you whether your design will fall over at scale or whether the code it wrote is quietly quadratic. DSA teaches you to judge code, and many companies still test it. Learn the core patterns well, skip the endless grind.

Asked 13 timesRead the answer

Choose based on what you want to build. JavaScript if you want web development, since it runs in every browser. Python if you are drawn to data, AI, automation or backend scripting. Both are excellent first languages, and the second one is far easier once you know the first well.

Asked 13 timesRead the answer