# How do I crack the TCS CodeVita coding competition

In case by cracking you mean to win it, that would require a lot of practice in competitive programming as you will face at the very least pretty good level of competition (Candidate Masters on Codeforces) for winning it. So you must already have a lot of experience in competitive programming for that. You can spend the next few months just trying to further improve your speed in rather simpler problems, since you are expected to solve all problems for being rank 1 and speed will be the deciding factor.

Next, to be in the top 100, you again require at least a little experience in competitive programming and I assume that you are good enough to at least get a rank in Round-1 and clear it. You must be good with implementation and easy problems at the very least. Try sharpening your skills with standard problems on sites like GeeksforGeeks. CodeVita does not have too high level competitive programming problems like Max Flow, Segment Trees, Bit-masking DP, etc. All you need to do is practice those standard problems from recursion, patterns, pattern matching, dynamic programming, etc. You could improve a bit if you practice implementation category of problems on HackerEarth / HackerRank.

Now, if cracking to you, means getting job interview(s) from TCS and just getting a rank regardless of where you are in the standings, I assume that you are not too hands on with competitive programming or even programming in some cases. You can still make it happen. Here is how:

From my experience, most of the problems in codevita lie in following categories:

1. Maths: Learn the standard topics like Sieve of Eratosthenes, Modular Exponentiation, Prime Factorization, GCD, LCM, Factorials, nCr, nCr modulo m, Modular Inverse, Fibonacci Series, etc.
2. Fundamental Algorithms: Binary Search (Try as many variations of problems using it as possible), Sorting using comparators &custom data structures, Pattern Matching (Rabin-Karp / KMP / Z-Algorithm), DFS, BFS. If you find a bit more time, proceed to some more graph algorithms like Dijkstra, Kruskal, etc.
3. Standard Implementation: Matrix Rotation, Array Transformations, Pattern Printing, Pattern Finding, etc. You can try to solve codevita problems from previous years to get an idea of patterns and standard implementation stuff. You can also find a lot of them on the links I mentioned above.
4. Standard Recursion / Dynamic Programming: Most of the recursion / dynamic programming problems are variations of standard problems like Coin Sum, Subset Sum, Knapsack, Min Cost Path, DFS with memoization, DFS in matrices, mathematical problems that break down into sub-problems that can be solved using recursion, etc.
5. Data Structures: A lot of problems are standard implementation problems that require basic or sometimes tricky use of Data Structures like Strings, Stacks, Queues, Priority Queues, Sets, HashMaps, Big-Integers etc. The only important point here is to be smart in choosing the language to solve a problem. For example, I always preferred Python in case of problems involving Big-Integers or too many strings as it is often easier. It is totally up to you what language you use but at least learn the use of standard data structures in that language.

These topics will cover almost all problems. Also, I would like to mention that CodeVita used to have a problem that required chess notations in the years prior to 2017. They have most probably been discontinued. But you can spend an hour or two learning about them if you wish.

A few other important tips:

1. Sit in the practice round, it helps you get the feel of the competition and makes you familiar with the interface.
2. The competition is 6 hours long. Choose a time slot that suits you best, in the 24 hour window you get in round 1. The time window used to be 3 PM on Day 1 to 3 PM on Day 2. I preferred either solving it late in the night (12 to 6) or early in the morning (7 to 1), the reason being that the servers are very stable by this time and I either felt refreshed in the morning after a good sleep or had my most productive hours at night. Choose the time slot that suits you. I would still suggest not being too early (3 PM Day 1) and neither being too late (8 AM or later on Day 2). Remember that you cannot exceed the 3 PM time on Day 2 and you must start at least 6 hours before it.
3. When you sit for the competition, have some food around you. It’s a long competition that requires energy. Your mind won’t work if your stomach decides otherwise.
4. In case you find errors in your code, try debugging and think of corner cases by dry running the solution on paper. Also cross check your optimized solution with brute force solutions. There is sufficient time for it, if you are smart about it. CodeVita is good with corner cases. Submit as many times as you need to but try to solve the problem.
5. Last, and the most important point.
Do not share your code or be involved in plagiarism.
I have a lot of friends, more than most people have in general. A lot of them had asked me for code. I decided not to share it. 3 of the top 5 coders in my college could not qualify to the next round because there code was caught in plagiarism check. They had probably shared their code with their friends. This is a very common thing and it happens every year. I am not against friendship or helping your friends, but understand that this is a competition and people who have worked hard, deserve to make it. All your efforts should not go in vain just because you took an emotional decision. Have a fair play.

These were just my tips, from my experience in CodeVita. Remember that CodeVita is a wonderful opportunity to get a job with TCS and even get a chance for interviews with better profiles and higher salaries. And if not that, you can always take part in it, for the love of coding.

All The Best To Everyone. 🙂

source : https://www.quora.com/How-do-I-crack-the-TCS-CodeVita-coding-competition