Get Time
Know your hero: bmerry

By mohit_ranka
TopCoder Member

Welcome to the first edition of “Know Your Hero,” a series of interviews with the coders, designers and developers who are at the top of the ratings.

In this edition, I present an interview with Bruce Merry (TopCoder Handle: bmerry; Algorithm Rating: 3100; Marathon Matches Rating: 2268). bmerry is currently positioned at no. 4 in the world in algorithm competitions, and is one of the few to cross the coveted 3000-point mark in the ratings.

We talked about his preparation for the TCO finals, his hobbies, future plans, SRM strategies and the difference between SRM and Marathon matches.

How long have you been engaged with programming? How did you start?

I've been programming almost as long as I can remember. My parents both program, so they encouraged me as a child. I started with Logo and moved on to GWBasic, then Pascal.

When did you start to realize that you would achieve so much?

I guess it was when I was still in primary school. In my last year of primary school, I came second in the national high school contest. Then at IOI I got gold medals in my last two years.

But I'm still surprised to find myself currently at #3 on the TopCoder ranking. I knew I was good, but some of the top guys are really amazing.

What are your hobbies, other than TopCoder?

What, there are other things to do than TopCodering?

OK, seriously, I do some other programming challenges, but also read books, watch movies, play table tennis. I'm a serious fan of Monty Python too.

How do you approach an algorithmic SRM event?

A lot of it is about having the right mindset - believing that you can solve the problems and having faith in your solution. At the moment I'm working in the order easy-medium-hard. I usually submit as soon as I can solve all the sample cases, although depending on the problem I might test some corner cases as well.

Something I learned from Petr is to then test the problem immediately, rather than hoping there is time to come back and do it later.

How did you go about preparing for the TCO07 Finals?

Initially, I just took part in as many SRMs as I could. When I started, I switched to VIM on Windows, which is the environment I used at the finals. I also worked through old finals in the practice rooms. Finals tend to have tougher problems than SRMs, so it was important to make the mental adjustment.

How have TopCoder events changed your programming?

It's definitely made my coding faster and less error-prone. I don't type any faster, but I've picked up a lot of shortcuts and so I write less code. And the less code you write, the less chance there is of bugs.

I also used to try to fully optimize almost everything, as a result of experience with IOI and similar challenges. I now take the approach that I try to write the minimum amount of code to get the job done, even if it's a bit slower to run.

What topics of study would you suggest to a new TopCoder member who wants to excel in algorithmic challenges?

You should definitely work through the Algorithm tutorials on the TopCoder site - they're all important. I guess dynamic programming and graph theory are the two pillars on which most challenge problems are based.

But no amount of book-learning is going to help without experience. The best way to get good at TopCoder is to take part in a lot of matches and, after each match, find out what theory you needed to solve the problems.

What is your proudest moment in TopCoder? How did you feel?

I would say advancing from the final round at the TCCC06 finals. I was really happy about it, and a little bit disbelieving.

You have done exceedingly well in both Algorithm SRMs and Marathon Matches. What's the difference in the approach required by these kinds of competition?

There is an element of planning in both, but to excel in an algorithm match you have to dive in quite quickly and trust your instincts.

In a marathon match it pays to take things slowly and methodically, making notes of different ideas, analyzing things theoretically before implementing them, and testing changes one at a time instead of in a big bunch.

What are your future plans?

At the moment I'm finish up a PhD. After that I'm hoping to find a job in the computer graphics industry. Hopefully I'll still be able to compete in TopCoder.

They say, “Behind every man’s success, there is a woman”, maybe you could coin a new phrase. “Behind every man’s successful coding, there is a _________”??


What do you think is the main key to your success?

I think its proficiency for algorithms and reasonable consistency. I haven't won many SRMs, and I don't have the highest submission success rate, but I usually get 2 or 3 problems in reasonably quickly and I don't often crash out totally.

A piece of advice to fellow TopCoder members?

Practice, practice, practice.