competitive programming 4 steven halim pdf