Competitive Programming

My long journey and achievement in programming competitions.

For those who don’t know, competitive programming is a sport where programmers compete by solving given problems within a given time (usually 3 to 5 hours). Winners are typically determined by the number of problems solved and the time it takes to solve them. The problems are designed to not only test participant’s knowledge of algorithms and data structures but also their ability to choose the right ones to solve the problems (think interview questions from a tech company but much harder).

Recently in May 2022, I along with two of my colleages took part in the ICPC North America Championship (NAC) 2022 on behalf of the University of Washington (UW). We were able to place among the top 10 which makes us qualify to compete in the upcoming ICPC World Finals, and I couldn’t be happier. My proudest moment was when I was the first to solve problem A and got a fancy first-to-solve balloon for our team (see the scoreboard).

UW Team: (left to right) Phawin Prongphaophan, Nathanon Akkaraphab, and Milin Kodnongbua, at the competing station.

I have been a part of the UW Team to compete in every ICPC competition season since 2018 when I first joined UW (4 seasons total). I was also featured in the Allen School News for taking part in the NAC back in 2020. It was not until this year that the our team advanced to the World Finals. I am grateful for that and I need to keep up my hard work for the upcoming competition.

Like any other sports, competitive programming needs rigorous training. I have been actively participating in programming competitions since high school back in Thailand. I went to series of training camps and dauting selection processes. Though hard-work and consistent practice, I was chosen to be one of the four representatives of Thailand to compete in the International Olympiad in Informatics (IOI) 2018 in Japan.

(Left) The four representatives and coaches; (Right) Milin at the competing station.

I did poorly on the first day. There was an easy problem which more than half of the participants got full points and I couldn’t solve it. I was able to pull it through on the second day and got a bronze medal at the end (see the scoreboard).

Throughout many years of practicing, I curated various data structures and algorithms that are frequently used in the contests in my Github wiki page. This was made for my own reference for some online contests that allow copying-and-pasting from the Internet. I hope it can be helpful for anyone else who is interested in competitive programming.