# 1086. High Five 前五科的均分

@TOC

## # 题目描述

Given a list of scores of different students, return the average score of each student's top five scores in the order of each student's id.

Each entry `items[i]` has `items[i][0]` the student's id, and `items[i][1]` the student's score. The average score is calculated using integer division.

Example 1:

``````Input: [[1,91],[1,92],[2,93],[2,97],[1,60],[2,77],[1,65],[1,87],[1,100],[2,100],[2,76]]
Output: [[1,87],[2,88]]
Explanation:
The average of the student with id = 1 is 87.
The average of the student with id = 2 is 88.6. But with integer division their average converts to 88.
``````

Note:

1. `1 <= items.length <= 1000`
2. `items[i].length == 2`
3. The IDs of the students is between 1 to 1000
4. The score of the students is between 1 to 100
5. For each student, there are at least 5 scores

## # 解题方法

### # 大根堆

C++代码如下：

``````class Solution {
public:
vector<vector<int>> highFive(vector<vector<int>>& items) {
vector<priority_queue<int>> scores(1010);
for (auto& item : items) {
scores[item[0]].push(item[1]);
}
vector<vector<int>> res;
for (int i = 0; i < scores.size(); ++i) {
auto& queue = scores[i];
if (queue.empty()) continue;
int sum = 0;
for (int j = 0; j < 5; ++j) {
sum += queue.top(); queue.pop();
}
res.push_back({i, sum / 5});
}
return res;
}
};
``````

## # 日期

2019 年 9 月 18 日 —— 今日又是九一八