I'm newbie in competitive programming, and have some questions to ask. Can you help?

Hello everyone!

I’m very new in competitive programming, joined Codechef this month, and have my own queries. So I’ll try to unleash every possible information of mine for you to understand me and help me with your utmost.

What I know:
I feel I’m good with basics of CP, but for your information- I’ve programmed in C/C++ before and I feel quite comfortable with that. I’ve also knowledge of basic data structures and basic algorithm like searching, sorting. I’m also familiar with WebDev and Open Source but I guess It has nothing to with competitive programming so I won’t talk much about that.

In “April Challenge 2017”, my first contest, I were able to solve 2 full problems (SIMDISH, DISHLIFE) with ease and one problem (ROWSOLD) partially (got TLE), and at the end I were able to grab this:

1526
★★
CodeChef Rating
(Highest Rating 1526)
Global Rank 29025
Country Rank 16489

I know this is not even good enough to mention but not the last one either. I will take it as lesson on how incompetent I’m in competitive programming.

Query:

  1. How to proceed from now on to grasp good knowledge of CP, algorithm and become yellow and then red eventually?
  2. Should I continue participating in Codechef monthly contest while I’m learning algorithm, or I should learn algorithm first and then should compete in monthly contest?
  3. I often see good coders who are yellow or red talk about solving hard problems, not the easy one. How would I know which one to solve and which one to avoid as I have already experienced of seeing some problems very easy but I face many errors and I learn new concept when I solve them in real?
  4. What mistakes should I avoid on this long journey of competitive programming?

I have no one around me who can help me with all these queries and guide me to the right path. I’ll really appreciate if you consider to help me with your best. Thank you!

Edit: Please try to clarify queries 2 and 3 in more deep way. Every great programmers have their initial days, and so have I. So please, I’ll appreciate your suggestion.

6 Likes

You must participate in every long challenge to learn new concepts.

In cook offs to test your speed

Learning while competing is best according to me:)

2 Likes
  1. If you need resources, then geeksforgeeks.org has best resources for algo and learning. You may want to prefer videk tutorials if you dont like reading, then there is a youtube video series by Tushar (Roy?). Also , @gkcs has been working hard dor bideo editorial of contests (Long ones). BUT the BEST resource is a community of people to solve Q with, whose help you can ask for. Whether it be debugging or catching corner case, a community/bunch of friends/code-friends help a lot. Try finding someone who would love to code with you!
  2. You should participate. Its just like reading a fact v/s actually applying it. You will have to know basics, and then ADDITIONALLY know what tweaks would optimise it for the Q. One needs sound dedication to learning and other needs a good, enthusiastic participation. Both complement each other dear, do both!
  3. Codechef sadly has no filter to “filter out” only easy problems. You can do 2 things, one is to check editorial to see the difficulty, or try the problem atmost 3 tomes, check editorial and discuss with us. Or goto some site where u are comfortable practicing. Thats the best we can do. But usually our instincts guide us well for if a problem is easy or not. Also, its good to discuss and request alternative approaches (as some users like @neiliit1992 do [hope i spelled correctly])
  4. 3 things to avoid are -

-Time wastage due to carelessness. Make a schedule!

-Getting demotivated for any reason. Stay motivated!!

-Taking a TOO long break from coding. Stay in touch with it!!

Additionally dear, if you feel i can help you anywhere, you can always mail me at my official mail id. It doesnt matter what it is, some counselling, motivation, or just some random chit-chat or any problem where i can help. I will be happy to help!

6 Likes

I would recommend you to solve problems from SPOJ sorted based on submission, at least solve 300 problems in SPOJ then switch to solving topic wise in Hackerrank. Once you solve top 300 problems in SPOJ you’ll have brief idea regarding everything that is CP about.
-Make a target to solve at least 3 problems in SPOJ each day, on weekdays, more than 3 on weekends
-If you feel the question is based on a topic you’ve no information about, read blogs and editorials in topcoder or codechef or codeforces regarding the topic then approach the problem
-If you still cannot go through someone’s posted editorial, most of them are available in google (you can even mail me I’ll try my possible best to help)
-Try solving the problem for at least 2-3 hours then switch to learning how it can be done
-Participate in codechef contest every month, it’ll help you approach problem in time constrained environment
-Upsolve the problems in codechef after contest end, go through the editorials and implement them yourself
-Solving SPOJ will take around 3-4 months and by then you’ll be well versed with most topics in CP

Make a schedule and be consistent and motivated and keep coding and keep solving, ever face a problem post question in codechef discuss, someone will surely help you.

2 Likes

Not to be rude or anything because I saw that u r new to the forum but these kind of questions u can easily get by googling a bit.

I’m new here too.

1 Like

just code on every platform you get to see … you can start practising by solving from the bottom problems of EASY on codechef . You can also solve topic-wise on Hackerearth and Hackerrank . They are really good as well … Best Regards

2 Likes

Your rating will definitely increase…but make sure to go through some concepts that are available in abundance on different sites and search for some good blogs.Hope this helps.

1 Like

Agree with you. Participation is necessary!!

Practice is the key.

2 Likes

Believe me I did a lot. And that’s why I’m not asking some mere questions which I already knew(like resources, courses or something) by googling. Hope I didn’t do anything wrong.

Thanks for your such valuable response. I’ll take your advice very seriously .

I were uncertain how to clear my doubts. Now I see it is worthwhile asking my doubts here.

And of course, thanks a ton!!

Thank you. I’m on with your advice now.

@only4, I completely agree with you. Thanks!

3 Likes

No-no you didn’t do anything wrong. Asking questions is never wrong.

But I see that questions 1 and 4 can be easily found on websites like quora.

See, question1 was necessary because I have mentioned everything what I know, and on that basis I were expecting from others to answer me how to proceed. If you see the Q1 carefully, I’ve distinctly mentioned “from now on”. Though Q4 was additional but however I’ve also mentioned in my edit to focus on Q2 and Q3 only. Actually I don’t prefer to ask such question on Quora because Quora does not have good coders as Codechef have. And thanks for your concern.