Posts

Good schedule to follow for becoming better at competitive programming for beginners

The three most important things in competitive programming: Learn and know your programming language. (~3 months - all the time) Learn algorithms/data structures and implement. (~9 months - all the time) Practice coding every day. Do contests. (all the time) (Doesn’t just apply to competitive programming) Have fun! (all the time) Thus, that’ll be how you break up your schedule. The time it takes for each person will differ, depending on if you already know algorithms, if you know programming or not, etc. The following is a more detailed how: #1 Learn and know your programming language. Pick a programming language and stick with it. Learn the basic syntax and start solving beginner problems. People always ask “how do you learn a programming language?” Search Google and find out; there are so many resources online. (If you really can’t find a resource, message me.) Try out USACO training pages. Or if you don't you can use the CodeChef beginner track: beginner | CodeChe

I have solved a lot of problems say 2000 why i have not improved till now?

The number of problems solved means little. I sometimes mention it to show passion for programming (2000+ means a lot of time spent), but it says nothing about the difficulty of the problems you’ve solved. You have read a lot of problem statements and are should be comfortable in coding up solutions. Since you haven’t been progressing, you need to work smarter than you have till now. I can go to Codeforces or another online judge and solve a few hundred Div2-like problems in little time. Yet, I won’t learn anything. By now, you must know the kinds of problems you struggle with. You need to work on those. Since you’re not in Div1, my guess is that you’re not consistently solving Div2D and E problems. Focus on them. Then, move up to Div1 up to problem C. When you struggle with a problem, say graph theory, try to study up the theory behind the key ideas and consolidate your knowledge and understanding of it. Qualifying for ICPC WF is much trickier. Some regionals are way easier

For an ACM-ICPC beginner, how should I start?

Most of the answers here point out places where one can solve problems. I'm going to describe an approach to approaching ACM programming contests which is a bit different. My definition of an ACM beginner is someone who has not done an ACM regional contest before and has essentially no competitive programming experience, so I will try to cover more of the details from starting on working ACM problems to competing in a regional contest. First, get comfortable with one of C++ and Java. You're allowed to use C, C++, or Java - using C is more likely to hinder you in the long run, so get acquainted with one of the other two languages. You should be comfortable enough with the language that you can do some simple things. In particular, you should be comfortable with the following: Reading in data from standard input (the console), or from a file. You  must learn how to do this, since that's how interaction with the program is done. Basic arithmetic operations with integer num

Top mistakes of competitive programmers

Please note that this answer is dedicated to competitive programmers only, as well as some recommendations in it. Competitive programming is not about readability, but about being able to code and debug fast.And still, the mains problems that I've seen: laziness and do not caring about code style even a little. That's ok if your program gets Accepted on first try, but otherwise you're gonna have a bad time debugging it. In general. So, mistakes (all of them are real stories): 1)Focusing on easier and 'cooler' things (like using of bitwise operations a lot instead of straightforward mathmatical formulas) instead of making code simpler to read and debug. Not only for them, but for the one who will help them too. 2)Copy-pasting it all around. "We don't need no architecture, just a little hack here is not bad. Oh, and here is another one. And here. C'mon, I still can tell you how is this supposed to work, but it doesn't work somewhy, can you help me?

Tips to be Competitive

General tips below: Tip 1: Type Code Faster! No kidding! Although this tip may not mean much as ICPC and (especially) IOI are not typing contests, we have seen Rank i and Rank i + 1 ICPC teams separated only by a few minutes and frustrated IOI contestants who miss out on salvaging important marks by not being able to code a last-minute brute force solution properly. When you can solve the same number of problems as your competitor, it will then be down to coding skill (your ability to produce concise and robust code) and ... typing speed. Try this typing test at http://www.typingtest.com and follow the instructions there on how to improve your typing skill. Steven’s is ∼85-95 wpm and Felix’s is ∼55-65 wpm. If your typing speed is much less than these numbers, please take this tip seriously! On top of being able to type alphanumeric characters quickly and correctly, you will also need to familiarize your fingers with the positions of the frequently used programming langu

Introduction to Big O

Big O Notation Big O is defined as the asymptotic upper limit of a function. In plain english, it means that is a function that cover the maximum values a function could take. As we saw a little earlier this notation help us to predict performance and compare algorithms. Growth Rate Name 1 Constant log(n) Logarithmic n Linear n log(n) Linearithmic n^2 Quadratic n^3 Cubic 2^n Exponential This is kinda abstract let’s see what it means in code: Growth Rate Name Code Example description 1 Constant a= b + 1; statement (one line of code) log(n) Logarithmic while(n>1){ n=n/2; } Divide in half (binary search) n Linear for(c=0; c<n; c++){ a+=1; } Loop n*log(n) Linearithmic Mergesort, Quicksort, … Effective sorting algorithms n^2 Quadratic for(c=0; c<n; c++){ for(i=0; i<n; i++){ a+=1; } } Double loop n^3 Cubic for(c=0; c<n; c++){ for(i=0; i<n; i++){ for(x=0; x<n; x++){ a+=1; } } } Triple loop

The Further Steps – Contesting And Continuing Practice – Competitive Programming last part of series

The Further Steps – Contesting And Continuing Practice – Competitive Programming last part of series If you have followed the first three parts of the series, you’d now be very well acquainted with the world of Competitive Programming. By now, you’d have started competing already. So, what are the further steps you can take to become a kickass competitive coder? – Contest in all the contests that you come across – Continue the practice in various online judges Regarding the contest, here are the most popular places you can contest online. 1. Topcoder Topcoder is the best and the most popular online judge with respect to contests. They have a variety of contests going on every now and then. Their SRMs are the most popular ones. There are various categories of contests, and more so, the prize for the contest winner is money. Practicing with past SRMs and contesting in the new SRMs whenever they conduct these matches, in Topcoder especially, will give you a great edge