Vatsal Kanakiya

Logo

Vatsal Kanakiya is a Principal and CTO at 100X.VC, Web3 Investor at 2AM VC, and Partner at Mehta Ventures. This is his personal website and blog.

< back to main page more posts >
3 June 2018

MEWE - Post 1 - ACM ICPC and Competitive Programming

by Vatsal Kanakiya

I came into college an eager fresher. Even before college began, I started working on CS, learning the programming languages Java, C, C++, and Python over the summer. In my batch, very few seemed to have this kind of exposure to CS, having just escaped the competitive examinations. Of course, being the n00b I was, I thought learning as many programming languages as you can was the whole point of CS. Boy, was I wrong.

Come September, I took part in a contest hosted on Codechef held during our annual techfest Abhiyantriki. The contest involved solving problems under certain constraints in a language of your choice using data structures and algorithms. Having no knowledge whatsoever of data structures and algorithms, and not even having any semblance of command over the languages I knew, I crashed and burned. I couldn't solve even a single problem on this site when I claimed to be one of the better coders of my batch.

It was after this I got introduced to the world of competitive programming and with it, algorithms and data structures. The first problem I tried to solve on Codechef took me nearly 50 attempts over a month to crack. The problem? - print all the numbers entered until you encounter the number 42. The silliest question possible, and I couldn't crack it then. Nevertheless, I persisted - solving one problem at a time, usually one problem a month.

Around the time I was trying to solve my first problem, a senior, Nilay Shah, introduced me to this competition called the ACM ICPC. The ACM International Collegiate Programming Competition is exactly what it sounds like. A platform for teams representing their colleges battling it out to see who can solve the most problems efficiently with the least errors. It is an extremely prestigious competition and no team from KJSCE had ever participated in it. My goal soon became participating under the KJSCE name at the ACM ICPC Regionals for the first time.

The summer between my fresher year and sophomore year, I got in touch with likeminded people - namely Krushi Gada and Mansi Jain - and formed the team "krumanalit". All through the summer, we practiced on Codechef for the competition. Our skills started surpassing our own expectations. I personally soon started ranking no. 1 for KJSCE in Codechef's monthly contests (It was a different fact that there were only 6 participants at most in the contests from KJSCE). So we were preparing for the competition well enough; but we had no idea how to participate in it. As luck would have it, the very year we decided to participate, a senior team, from the fourth year, decided to participate too. They had all the steps for ICPC registration and participation already figured out and made the path ahead for us easier. And so it went - the next 3 months, all the three of us did was pracitce for ICPC.

Come D - day, we met at a common place and figured out our strategy for the preliminary round. As it stood, we only had to beat one team (our seniors) to get the honor of representing KJSCE at the ACM ICPC Amritapuri Regionals. The story goes - we messed up our first question itself, solving it 10 minutes slower than our competitors. The pressure was on us. We had to solve the next problem before the competing team did, without any errors or penalties. After a whole 30 minutes of brainstorming, we came up with a solution that seemed legit, coded it up, and submitted it. The wait for a submission under review is agonoising - you never know if you shall clear the problem or not. Our agonising wait ended with a reject and a time penalty. We were crestfallen, but had no other choice but to continue trying - after all, our seniors still hadn't made even a submission. With some serendipituous debugging, we came across what we were missing in the solution. Leaving no second waste, we coded the changes, tested our solution rigorously, and submitted it. A painstaking wait - and we had an accept! We knew that the rest of the questions were out of our capabilities. All we could do now was hope our seniors didn't solve the problem fast enough. Fast forward to december, the three of us were catching a flight to Coimbatore for the regionals.

The regionals were like a completely different world. People here were unafraid of showing off their achievements and boy, did they have achievements. A majority of them were students of premier institutes like IITs, NITs, IIITs, BITS, etc., and nearly all of them flaunted tee shirts of the places they might've interned at or competitions they's won - like Google, Microsoft, Hackerearth, Hackerrank, Morgan Stanley, Goldman Sachs, and so many more! It was a real eye opener as to the quality of the best programmers in the country. Not unexpectedly, our performance there was below par. No matter, it was an experience we will never forget owing to the exposure to a class of people we had only ever imagined.

After my first ICPC, I scaled newer heights, at one point being the top performer for KJSCE across all formats on Codechef and Codeforces. In my junior year, I participated and qualified for two separate regionals with another team - Team something - consisting of Dipen Ved and Abhishek Ananthakrishnan (We were the top 3 programmers from KJSCE at this time). Come senior year, however, other interests caught up with us. We stopped practising as much and did not qualify for the regional - beaten by a team of sophomores. Life had come full circle.

I have been on a sabbatical from competitive programming since the last ICPC qualifying round. We have been surpassed by our juniors across all platforms now. We hope to come back to our previous level some day when we join again. After all, we can't forget what made us fall in love with the art of programming.


Like what you're reading?


tags: Vatsal - Kanakiya - blog - story - engineering - series - acm - icpc - competitive - programming - misc