I was first introduced to ACM-ICPC by Mr. Ali, my lecturer in data structure course. He didn’t give any lecture about ACM-ICPC, but he gave me UVA Online Judge website address. I find the site very interesting, though I could hardly solve any problem. At that time, I could only solve about 10 (very easy) problems in a month. In the same year, I participated in BNPC-CS 2003 (Bina Nusantara Programming Contest for College Student). I managed to pass the qualification round (multiple choice problems) but failed at semifinal round (programming). I found that the problems in this contest were taken from UVA Online Judge. This really encouraged me to solve more problems in UVA so I could get a better rank next year! By 2004, I had solved around 100 problems. Unfortunately, however, the problems in BNPC-CS 2004 were not taken from UVA Online Judge. Despite this, I managed to solve one problem in semifinal round! There were 41 people selected for the final round, and I was the 42nd :-(. In 2005, once again I participated in BNPC-CS, but this time I have no goal because it was my last year in university. Surprisingly, I ranked 10th in the contest!! I got a bronze medal and was invited to ACM-ICPC training.
At that time, ACM-ICPC training was only intended for BNPC-CS winners. Our coach was Peter Wijaya, an ex-contestant. Actually, he never taught us anything, he chose some problems from UVA and let us solve them by ourselves. This training was the first time when I learned about algorithm, and I find it very interesting. I never knew how to code BFS before or what dynamic programming is. At that time, I coded a lot! I used Felix Halim’s tools to find easy problems on UVA. He had also created a ranklist page for Indonesian coder in UVA, which made me more enthusiastic to solve more and more problems, so I can get a better rank than others. Around October 2005, I was selected to participate in ACM-ICPC Manila site, together with Ang Ing Ing and Evan Leonardi. At that time, I had solved more than 300 problems in UVA.
Manila 2005 was my first experience in ACM-ICPC. My team only managed to get 14th rank, worse than Felix’s team, 10th rank. As I recall, the problems was not too hard, and I think I can solve all of them by now (though some problems have unclear statements).
In 2006, Yen Lina asked me to become a new coach, and I agreed. I never had a proper training before, so I just follow Peter Wijaya’s style of coaching: select some problems and solve them. But this time, I also tried to solve the problems I’ve selected and helped those who can’t solve them. I used to say: “Any problem that I can solve, you have to be able to solve it. Any problem that I can’t solve, you might better try to solve it” :)). Though I were a coach, I think I learn a lot at that time. I began to read Introduction to Algorithm and many other books, and I also joined TopCoder. I learned about network flow algorithm, number theories, and many graph theories. I used to spend my weekend to code or compete in online contests.
After I had solved a lot of problems, I began to refine my coding skills. I used to code just to get an accepted answer, but later I began to analyze my code, proof, and rewrite an eficient code. My experience in TopCoder has also helped me improve my speed and accuracy a lot (“one hit AC”).
Well, that’s a bit about my problem solving background.