I believe that it is because of two reasons [massive generalization follows...] (1) emphasis on math and physics (2) stress on discipline and rote learning. US students have (1), Chinese have (2), Russians have both. You would realize that most competitors in these contests end up doing pattern matching with previously solved problems. In addition, they keep a catalogue of most asked questions, common codebase, etc. for reference and pulling out code. I do not think that these competitions produce good programmers as they incentivize writing quick, ugly, non-resusable code.