{"id":986,"date":"2016-08-19T22:27:31","date_gmt":"2016-08-19T16:57:31","guid":{"rendered":"http:\/\/abhinav.spsdarj.org\/?p=986"},"modified":"2017-01-16T09:57:37","modified_gmt":"2017-01-16T04:27:37","slug":"what-was-anudeep-nekkantis-competitive-programming-strategy-to-become-35th-in-global-ranking-in-just-6-7-months","status":"publish","type":"post","link":"https:\/\/abhinavkr.com\/musings\/2016\/08\/what-was-anudeep-nekkantis-competitive-programming-strategy-to-become-35th-in-global-ranking-in-just-6-7-months\/","title":{"rendered":"What was Anudeep Nekkanti&#8217;s Competitive Programming strategy to become 35th in Global ranking, in just 6-7 months?"},"content":{"rendered":"<p><span class=\"rendered_qtext\"><span class=\"rendered_qtext\">Answer by Anudeep Nekkanti:<\/span><\/span><\/p>\n<blockquote><p><b>What I did ?<\/b><\/p>\n<ul>\n<li>Solved about 300 problems on SPOJ in this order &#8211; <span class=\"qlink_container\"><a class=\"external_link broken_link\" href=\"http:\/\/www.spoj.com\/problems\/classical\/sort=-6\" target=\"_blank\" rel=\"noopener nofollow\">Sphere Online Judge (SPOJ)<\/a><\/span><\/li>\n<\/ul>\n<p><b>Result ?<\/b><\/p>\n<ul>\n<li>Became very good with C++ and STL<\/li>\n<li>Got introduced to most Competitive programming KEYWORDS (like DP, maxflow, sets, hashing, etc)<\/li>\n<li>Learned Standard Problems and Algorithms<\/li>\n<li>Indenting code<\/li>\n<li>Fast typing \ud83d\ude1b<\/li>\n<\/ul>\n<p><b>How ?<\/b><br \/>\nBefore starting programming, I searched about how and where to start, many said &#8220;Learn an Algorithm, implement it, solve\u00a0 problems related to it&#8221;. I did <b>not<\/b> do it that way, If you know what algorithm to use you generally think in that direction and leave about correctness.\u00a0 I did them problem by problem, easy to hard, I spent 1 &#8211; 4 hours on a problem.<br \/>\nI get the idea, I code it, Get it Accepted. (I used to test a lot, I always wanted to get AC on first go)<\/p>\n<p>I do not get the idea, I save that problem and try it after a month again. If I still do not get them, then search for hints. If it clearly needed some algorithm which I never used then I first smile (? I could not only because I did not knew the algorithm \ud83d\ude1b ) and then start reading about that algorithm. TopCoder had tutorials of almost all common algorithms. This is where I did a <b>BIG MISTAKE<\/b>. I never cared about correctness or run-time analysis proof, I always learned how to solve the problem using that algorithm, I hardly learned about how the algorithm works. I feel bad about it now, but that is how I solved those problems then. I solved max-flow, convex hull, etc., problems using described algorithms but I did not UNDERSTAND those algorithms then.<\/p>\n<p><b>Mistake: <\/b>Once I started taking part in contests, I completely stopped practice.<\/p>\n<p><b>35th in Global Ranking<\/b><\/p>\n<ul>\n<li>CodeChef long contests are comparatively easy ( Which is good, You can learn a lot), you get a lot of time to think about a problem, search for resources. You only need KEYWORDS to search for similar problems.<\/li>\n<li>I gave a lot of time for each contest. I used to solve 4 easy problems in 2-3 days, then take 5-6 days for other 3 problems.<\/li>\n<li>CodeChef rating system is not good. It is highly Volatile.<\/li>\n<\/ul>\n<p><b>If I am to start programming now, I would do it this way<\/b><\/p>\n<ol>\n<li>Solve 200 most solved problems on SPOJ, Problem by problem. In 2 months.<br \/>\n<i>(This will teach all standard problems, algorithms and implementation skills)<\/i><\/li>\n<li>Solve problems from CodeChef and CodeForces for 2 months.<br \/>\n<i>(This will teach variations, we can read others solutions and learn better ways. Skip easy problems)<\/i><\/li>\n<li>Solve problems from TopCoder for 2 months.<br \/>\n<i>(This will teach\u00a0 Dynamic Programming. Div 1 500p)<\/i><\/li>\n<li>Check past ACM ICPC Regional&#8217;s Problems<br \/>\n<i>(Great quality problems)<\/i><\/li>\n<\/ol>\n<p><b>If I am to learn a new Algorithm now, I would do it this way<\/b><\/p>\n<ol>\n<li>Read it from at least 3-4 different sources.<\/li>\n<li>Understand correctness proof and run-time analysis.<br \/>\n<i>(This is very very important, you will know it only when you\u00a0 deal with non standard\u00a0 and hard problems)<\/i><\/li>\n<li>Question yourself on every step for correctness. Try to tweak the implementation.<\/li>\n<li>Check other implementations.<\/li>\n<\/ol>\n<p><b>Final Note<\/b><br \/>\nThought I became good in solving problems and had good rank. I later(Feb 13) realized that I learned it the wrong way. I then started learning again. I learned all the algorithms again this time gave importance to the algorithm itself, correctness proof and mathematical analysis. It is worth the time.<\/p>\n<p><span class=\"qlink_container\"><a class=\"external_link\" href=\"http:\/\/www.codechef.com\/DEC13\/problems\/DECORATE\" target=\"_blank\" rel=\"noopener nofollow\">Lucy and the Flowers<\/a><\/span> &#8211; Problem from December long contest, Try to solve it with suffix arrays. You can only if you understand suffix arrays and LCP completely.<\/p>\n<p>I was able to solve a not-so-obvious medium level Max-Flow problem at ACM KGP Onsite only because I completely understood how the algorithm works. It was at 4 hour 25 minutes I got 5th problem accepted, then I read this problem and got it accepted 4 minutes before end. Learning the algorithm helped. Dot.<\/p><\/blockquote>\n<blockquote>\n<hr \/>\n<\/blockquote>\n<p><span class=\"rendered_qtext\"><span class=\"qlink_container\"><a href=\"https:\/\/www.quora.com\/What-was-Anudeep-Nekkantis-Competitive-Programming-strategy-to-become-35th-in-Global-ranking-in-just-6-7-months\/answer\/Anudeep-Nekkanti\" class=\"broken_link\">What was Anudeep Nekkanti&#8217;s Competitive Programming strategy to become 35th in Global ranking, in just 6-7 months?<\/a><\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Answer by Anudeep Nekkanti: What I did ? Solved about 300 problems on SPOJ in this order &#8211; Sphere Online Judge (SPOJ) Result ? Became very good with C++ and STL Got introduced to most Competitive programming KEYWORDS (like DP, maxflow, sets, hashing, etc) Learned Standard Problems and Algorithms Indenting code Fast typing \ud83d\ude1b How&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[4,11,189],"tags":[230],"class_list":["post-986","post","type-post","status-publish","format-standard","hentry","category-knowledge","category-quora-post","category-tech","tag-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4KGvB-fU","jetpack-related-posts":[{"id":998,"url":"https:\/\/abhinavkr.com\/musings\/2016\/09\/what-is-the-best-strategy-to-improve-my-skills-in-competitive-programming-in-2-3-months\/","url_meta":{"origin":986,"position":0},"title":"What is the best strategy to improve my skills in competitive programming in 2-3 months?","author":"Abhinav","date":"September 11, 2016","format":false,"excerpt":"Answer by Sachin Gupta: This post has been taken from the blog post\u00a0 Learn to Code by Competitive Programming written by MV Kaushik when he was interning at HackerEarth Here are some steps to get started and be good at it. Get comfortable writing code in either of one of\u2026","rel":"","context":"In &quot;Knowledge&quot;","block_context":{"text":"Knowledge","link":"https:\/\/abhinavkr.com\/musings\/category\/knowledge\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":681,"url":"https:\/\/abhinavkr.com\/musings\/2015\/02\/how-did-mark-zuckerberg-train-himself-to-be-a-programming-prodigy\/","url_meta":{"origin":986,"position":1},"title":"How did Mark Zuckerberg train himself to be a programming prodigy?","author":"Abhinav","date":"February 8, 2015","format":false,"excerpt":"Answer by Mike Hughes: Just because Mark started Facebook doesn't mean he is a programming prodigy. Mark's major was Pyschology so he wasn't at Harvard as a CompSci prodigy. Back in 2004 building a CRUD (Create, Read, Update, Delete) application in PHP\/MySQL was fairly easy. I would bet if you\u2026","rel":"","context":"In &quot;Knowledge&quot;","block_context":{"text":"Knowledge","link":"https:\/\/abhinavkr.com\/musings\/category\/knowledge\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":564,"url":"https:\/\/abhinavkr.com\/musings\/2014\/08\/be-a-good-programmer\/","url_meta":{"origin":986,"position":2},"title":"Be a good Programmer","author":"Abhinav","date":"August 24, 2014","format":false,"excerpt":"Recommendations for Academic Learning Introduction to CS Course Notes: Introduction to Computer Science Course that provides instructions on coding. Online Resources: Udacity- \u00a0Intro to CS course, Coursera - Computer Science 101 Code in at least one object oriented programming language: C++, Java, or Python Beginner Online Resources: Coursera - Learn\u2026","rel":"","context":"In &quot;Knowledge&quot;","block_context":{"text":"Knowledge","link":"https:\/\/abhinavkr.com\/musings\/category\/knowledge\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":691,"url":"https:\/\/abhinavkr.com\/musings\/2015\/02\/what-are-the-best-kept-secrets-of-great-programmers\/","url_meta":{"origin":986,"position":3},"title":"What are the best-kept secrets of great programmers?","author":"Abhinav","date":"February 11, 2015","format":false,"excerpt":"Answer by Jeff Darcy: Never reveal all that you know. OK, seriously this time.\u00a0 I think there are really a few things that distinguish great programmers. Know the concepts.\u00a0 Solving a problem via memory or pattern recognition is much faster than solving it by reason alone.\u00a0 If you've solved a\u2026","rel":"","context":"In &quot;Knowledge&quot;","block_context":{"text":"Knowledge","link":"https:\/\/abhinavkr.com\/musings\/category\/knowledge\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":646,"url":"https:\/\/abhinavkr.com\/musings\/2014\/10\/what-does-it-feel-like-to-be-poor\/","url_meta":{"origin":986,"position":4},"title":"What does it feel like to be poor?","author":"Abhinav","date":"October 31, 2014","format":false,"excerpt":"Answer by Anonymous: I was born into family of lower middle class .We are two girls and I'm the Elder one.- Dad and his family are against Girls education and career. I was consistently class topper and excelled in many extra-curricular, But always been put down\u00a0 - \" Learn cooking\u2026","rel":"","context":"In &quot;Quora Post&quot;","block_context":{"text":"Quora Post","link":"https:\/\/abhinavkr.com\/musings\/category\/quora-post\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":967,"url":"https:\/\/abhinavkr.com\/musings\/2016\/07\/what-is-the-latest-fad-among-the-youth-of-india\/","url_meta":{"origin":986,"position":5},"title":"What is the latest fad among the youth of India?","author":"Abhinav","date":"July 25, 2016","format":false,"excerpt":"What is the latest fad among the youth of India? by @iAmoghAnswer by Amogh Talpallikar:Let me take this opportunity to highlight a trend that I have observed on social media among young Indian IT \u201cprofessionals\u201d.They grow up having not explored nooks and corners of their heart to find out what\u2026","rel":"","context":"In &quot;Fun Stuff&quot;","block_context":{"text":"Fun Stuff","link":"https:\/\/abhinavkr.com\/musings\/category\/fun-stuff\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/posts\/986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/comments?post=986"}],"version-history":[{"count":3,"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/posts\/986\/revisions"}],"predecessor-version":[{"id":1289,"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/posts\/986\/revisions\/1289"}],"wp:attachment":[{"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/media?parent=986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/categories?post=986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abhinavkr.com\/musings\/wp-json\/wp\/v2\/tags?post=986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}