Competitive Programming: Explained by an IOI medalist