I'm in my university's team for the ACM ICPC [1]. We practice about one or two times per week, where each practice session is 5 hours. Some of the stronger programmers really practice this stuff every day. cf. Nick Wu's description of his preparation for programming contests [2].
[0] In 5 hours, the large input sets will be judged. I might move up or down the rank list depending on whether my answers for the large input were correct.
[2] http://www.quora.com/Specific-Quora-Users/Nick-Wu-Did-your-t...
At my university, after a practice session, we sometimes discuss solutions to problems so that those who couldn't figure them out will know how to solve them in the future. After being told the solution to a problem you couldn't solve, you should try coding it up anyway.
I imagine there's a lot of practice involved, but I wasn't able to spot an interview that specified the exact amount of time tourist spends coding or studying algorithms every day.
[1] http://community.topcoder.com/tc?module=AlgoRank
[2] http://www.wired.com/2010/11/mf_algorithmolympics/
[3] http://www.smh.com.au/lifestyle/the-whiz-kid-20120821-24k69....
- How many hours a day are you in front of the computer?
- Not more than three to four. I like playing football and table tennis, so I try to find time for sports as well.
Source: me asking that exact question to him at IOI 2012
Also, this guy has been performing at an extremely high level for years. If he didn't do any competitive programming practice at all for a year, I doubt you'd notice a big difference in his performance.
Some of the top guys at Topcoder Open / Google Code Jam don't even participate in matches outside of the yearly tournament and I doubt they are practicing consistently (i.e. once you get to that level at problem solving, performance doesn't seem to decay much and certainly much less than in a similar situation for athletes - though these guys are students / engineers whose brains are still being stimulated and solving other kinds of problems outside of competitions).
It's not an either/or question though =) By most common definitions, the guys at the top, specially those that reach the finals are "geniuses" at algorithmic problem solving, yes.
Maybe that's jealousy talking, though.
(Actually, most of the good sport coders that I know develop that knack of knowing where the solution is headed, without pinpointing a previous problem)