Ola people! Today we have with team “BitBees” from Indian Institute of Technology – Kharagpur with us. Let’s meet Biswajit Paria and hear his journey till the world finals.
Team name: BitBees
Team rank: Amritapuri regional: #2
Q. How old were you when you started programming and what got you started in programming?
A. I was 17 when I started programming. I wanted to learn programming much earlier but not having an internet connection at home or someone to guide me prevented me from learning by myself. I wrote my first c++ program when I took computer science during high school.
Q. What inspired you to get into competitive programming? Were you passionate about it since school or anything special in college?
A. I learnt about the informatics Olympiad during school from my friends at math Olympiad camps. I did some preliminary reading on algorithms and got extremely interested. Algorithms were the one and only reason I was interested in competitive programming. I soon learnt about CodeChef (but heard about Codeforces only in college). To me solving problems on CodeChef and increasing the number of solved problems looked pretty cool. Though I was interested since high school it was too late for me to practice enough at get good at it. Once I was in college I continued to learn by myself initially, till we formed our team. Solving problems together increased our skills and interest.
The most significant factor according to me is my introduction to programming and algorithms during high school. Had it been earlier, it would have been better.
Q. How to start preparing for ACM ICPC for those who are new to algorithms and competitive programming? It would be great if you could share your journey from a beginner to a World Finalist today.
A. Some advice for beginners (which you should take with a pinch of salt):
Find more advanced topics to learn.
Most important piece of advice: Practice problems, take part in contests and read the editorials. Reading the editorials will give you a glimpse of the topics one should know, and most importantly will teach you problem solving.
Try to solve problems on your own first. If unable to solve, then DEFINITELY read the solution and try to understand. If not able to understand perhaps you should try to solve easier problems first.
But do not spend your time trying easier problems only. To progress you must try hard to solve difficult problems. Keep patience and spend time (from hours to days) trying to find a solution.
Don’t lose heart about not being able to solve a problem. Even world finalists cannot solve all problems.
- A lot of online content and help is available nowadays. Use it efficiently. Use the forums to clear your doubts. Send messages to other programmers and ask for help. Creating a group of interested friends in your college can be extremely helpful.
Some advice for non-beginners (which you should take with a pinch of salt again):
Solve lots of problems especially difficult problems. If you cannot solve them on your own, read the editorials and implement them.
Team practice seriously if you want to participate in the ICPC.
Give emphasis to algorithms and discrete Math. The most difficult problems are often related algorithms and discrete Math, not just implementation or data structures.
Practice implementation of complicated algorithms.
Read other’s codes. You will discover simpler ways of doing the same thing.
Write clean readable code (refer to Anurag Anand’s code for a gold standard reference). Helps a lot in debugging during contests, especially for complicated code.
Can you throw some light on how did you and your team manage the time and coordinate during the onsite finals? It would be great if you could share some tips for the next year ICPC aspirants.
At the start of the contest we divide the problem set into three groups and assign a person to each. We try to quickly find the cakewalk problem and assign the most robust (not the fastest) coder to code it and submit. Thereafter we independently work on different problems.
Once someone solves a problem he implements it himself or conveys the solution to someone else for implementation. We make sure that all three members are not working on the same problem. For difficult problems, we often discuss among ourselves. Team practice is very essential for a good coordination.
We take penalties very seriously and at least two people read the code and verify the algorithm before submitting the solution.
Q. What did you do to improve over these years and maintain your target status for all these years with all the competition? What do you think was your most effective method to improve? Any hacks on how to reach where you are in less time ;)?
A. Once we were experienced enough, 5 hour team practice sessions was the most effective strategy for us. We practiced in the codeforces gym once a week. Though the difficulty and type of the problems in the onsite were not as that of the codeforces gym, our team coordination improved a lot.
The only hack to reach the WF in less time is to be super smart, which is not a privilege enjoyed by everyone. 😛
Q. Do you have any other thoughts as we wrap up?
A. Not being able to qualify for the WF is not the end. If you are really interested in algorithms and programming, pursue it for life. Everyone can make his/her contribution by working towards the greater goal of building a programming conscious India. CodeChef is already doing its part in this, we can take it to the next level by inspiring our next generations.
When preaching to our younger generations, make sure to clarify that programming is not just ‘coding’. A strong hold in algorithms and mathematics alongside good implementation skills make a good programmer.
We hope you enjoyed the interview. We have few more in the pipeline and will be publishing them soon. Till then, share this interview among your friends, and family and send in your wishes and questions for them. #GoForGold.