I’m AmirReza PourAkhavan, Codeforces Contest Coordinator. I let the story become complete and I’m sharing it now.
The story is about a 16-year competitive programmer, who left his family and migrated to another city alone to follow competitive programming. After seven years, he advanced to the International Collegiate Programming Contest World Finals, twice.
Why I’m writing this
Six years ago someone asked me here to write my story. I think it can help you to never give up.
A brief about me
I've been doing competitive programming for ten years. I advanced to ICPC (International Collegiate Programming Contests) World Finals twice, in 2019 at Porto and 2020 at Moscow. At ICPC World Finals 2020, our team took high-honored place twenty-four, which is equal to the top 0.03% of 200k students participating in ICPC.
I am presenting in the ICPC World finals Porto, 2019: CP-connect, A problem recommender.
I am presenting in the ICPC World finals, Moscow 2020: Let the students grow (on successful teaching).
I was a tester, problem setter, editorialist, and contest coordinator at Codeforces, Topcoder, CodeChef, and HackerEarth, for five years. Also, I am (was) a judge at Africa and Arab Collegiate Programming Contest (super regional competition for ~70 countries) 2021, 2022, and European Girls Olympiad of Informatics (girls version of IOI) 2022.
I’ve solved ~3.7k problems on Codeforces, and ~5k problems overall. I have been teaching Algorithms, Data Structures, and competitive programming for ICPC and IOI for six years. I’m also a software engineer and algorithm designer at a company.
How I started the competitive programming
I was 13 years old when I learned QBasic – a simple programming language. In 7th and 8th grade, I learned QBasic and VB at school. We had a competition in our middle school called B.M.M. (Best Programmer in School) (Yes it should be BPS, but it’s Persian). I took second place and it was a sad thing for me that I lost the competition to my friend and my competitor ATofighi.
In the 8th grade, we made a team and competed in the HelliNet Programming Contest which is the most known high-schooler competition in Iran. We took almost the last place. All participants received a simple big cup with the HelliNet logo. It was nice for me.
In the early 9th grade (Sep 2013), I became familiar with real competitive programming. I went to the olympiad. By olympiad, I mean the Iran National Olympiad of Informatics (INOI) specifically; and generally, the International Olympiad of Informatics.
I used to live in Yazd. Yazd is a city with ~500k population in Iran. As you may know, Tehran is the capital of Iran. Yazd is 700 km far from Tehran. Finding an olympiad teacher in Yazd was (and currently is) almost impossible. On the other hand, there were (and currently are) many professional olympiad teachers in Tehran. I was aware that I needed to pass the path alone.
A teacher (Seyed Hamed Sadat Hosseini) taught me C++ in the summer before 9th grade. He was my first teacher. I still meet him sometimes and I thank him for all his effort to help me start the path. I started learning Combinatorics, Graphs, and at the same time, Algorithms, Data Structures, and coding. I felt that I love competitive programming and the olympiad.
We were several olympiad-lover students, trying without a guide. We were going nowhere. Solving random problems on Codeforces and gaining and losing ratings at random. We had a teacher or two who held limited classes for us. I participated in classes, but most of my growth was on my own.
I didn’t participate in many regular school classes. Instead, I studied for the olympiad. Let me describe how the olympiad works in Iran.
How INOI works
Students can participate in INOI two times: in the 10th grade and 11th grade. Each year, a season of INOI runs. Each season starts in about February and ends in September. It contains several stages. In the past 9th grade students could participate in the first two stages just to become familiar.
In the first stage, about 10k students participate and 1000 students pass. Then in the second stage, this number reduces to 80. These two stages are theoretical (combinatorics, graphs). Then we have a third stage, which is coding.
The forty students passing the third stage enter the summer camp. They review their knowledge and at last, they take several exams and they win medals. Gold medalists will be free to choose every major and every university to study in without participating in any exam and for free. Other students need to participate in an exam called Konkoor to get into university.
Silver and Bronze medallists have a huge bonus when participating in Konkoor. E.g. if a medalist took place 5000, it’s like that he took place 1000. Note that all of the expenses of students studying in top universities (top ~100k students) in Iran are covered by the government.
Let's get back to the story. Studying for the olympiad instead of Konkoor is a risk. Why? Because if someone fails in the olympiad, he’ll have just one year (12th grade) to get prepared for Konkoor, while others try for 3, or 4 years. I was taking a risk. In February 2014, I participated in the first stage of INOI and passed with a high grade. It was a good start. I was very happy. You can see that my rating was purple at that time. Again, I and Alireza (ATofighi) participated in HelliNet. We took place ~15. I got my first T-shirt in that competition.
I experienced a high rating loss at the end of the 9th grade. At that time I didn’t know any algorithm/data structure. I knew combinatorics (counting, simple induction, ...) and was able to solve simple graph theory problems. I started 10th grade with a rating of 1057, Newbie.
To be continued...