# Source: https://www.quora.com/Where-do-I-start-competitive-programming-I-know-the-basics-of-C-and-C++

Where do I start competitive programming? I know the basics of C and C++.

I would suggest you to first master C++ thoroughly. Since language is your weapon, a well sharped weapon is half job done 🙂

Then learn about basics of Data Structures like stacks queues, graphs, trees, and their implementation thoroughly. There are several youtube channels which have excellent tutorials on these topics. Finally solve Data Structures challenges on hackerrank.

Then study the C++ standard library which provides a robust implementation of all the Abstract Data Structures and some algorithms like sorting etc.

You can now start solving Warmup Challenges on Hackerrank in sorted order from easy to hard and then moving on to other domains. Hackerrank has the best UI as compared to other platforms also you can view various test cases. BUT you cannot view other people’s solutions.

Another good platform is codechef. Open Easy problems on CodeChef page. scroll down to the bottom of the page and start solving problems with most number of successful submissions. You can view other’s solutions on codechef so that you can get an idea of their thought process and style of code.

After practicing easy problems for 2 months. I would suggest to start learning various standard algorithms involving Dynamic Programming, Graphs, Trees, Greedy techniques, Number theory etc. Youtube has many good videos for these topics for ex. Excellent Dynamic Programming and other tutorials on Youtube by Tushar Roy .

There are many other good websites like Topcoder , HackerEarth, Sphere Online Judge (SPOJ) , Codeforces etc.