# A Complete Guide to Competitive Coding

What is competitive coding?
First things first, you must know what competitive coding means. It’s like a mind sport over the internet or LAN. A problem statement is thrown to the coders with provided specifications and guidelines and ‘Atta Boy!’ people get to work. Companies like google and facebook encourage these events for their employees on a regular basis. Competitive coding is a fad among the collegiate and graduates. And websites like CodeZenSPOJ, Codechef, and others are taking it to a whole new level.
What kind of problems does it have?

It consists of pragmatic usage of classical algorithms and data structures. Your creativity and problem-solving skills are what come into play next. A basic knowledge around things like Complexity Analysis and Discrete Mathematics is required to become a good problem solver.
The problems rotate majorly around:
• Dynamic Programming (Knapsack, 8-queens, Traveling Salesman)
• Backtracking (8-queens, Sudoku)
• Greedy Algorithms (Matching Pursuit, Egyptian Fractions)
• Sorting (Binary Search, Merge-sort)
• Search/Path-finding (Breadth-First Search, Depth-First Search, Dijkstra)
• Network Flow Problems (Minimum Cut, Max Flow)
• Combinatorial  (Permutations, Calendrical Calculations)
• Geometrical (Convex Hull, Minkowski Sum)

How can I get good at it?

They say that you need to strengthen your base notes to hit that high octave. Don’t you? So let’s get you started with some basic preparation here.
• Get basic coding and hands-on knowledge on C, C++ or Java. These are the basic languages allowed in any programming competition. Check out our website for courses that can make you a coding rockstar!
• Get hitched with an online judge. He will be the critic and guide on your road to code. CodeZen, HackerearthSPOJ, Codechef, Top coders are the ones recommended.
• Read, practice, implement. There is an ocean of resources on the internet, all available for free. All you need to do is sit and code!
• Practice as much as you can on popular topics like Graphs, dynamic programming, number theory, arrays etc.
• When you’ve practiced enough, all that’s left is to participate. Participate in competitions as much as you can. With our Coding Ninja challenges, you can constantly workout and develop those coding biceps.
• Read and react. Review the codes by top coders, understand their approach and try to outdo it. This is a very important aspect as you get a cheat sheet to what top coders do and how you can better your methodologies.
• DON’T GIVE UP AND DON’T GIVE IN! I say this, because there is a difference between the two. You should be persistent and sincere no doubts about that but do not get stuck. The moment you feel that’s happening, take a break, get a beer/green tea 😉 or listen to your favourite song. Get back to work and if it still doesn’t work, move on!
Don’t wait up, pick up your Ninja code swords and cut through the world of competitive coding today!