Heartflow analysis workflows may produce a list of numeric scores that must be prioritized for review. Given a list of scores, return the n largest values efficiently without fully sorting the list.
Implement top_n_scores(scores, n), where scores is a list of integers or floating-point numbers and n is a positive integer. Return a new list containing exactly the n largest values, including duplicate values, ordered from largest to smallest. The input list must not be modified.
Use an approach that is efficient when n is much smaller than the number of scores.
def top_n_scores(scores, n):