# LeetCode - 2512. Reward Top K Students ### 題目網址:https://leetcode.com/problems/reward-top-k-students/ ###### tags: `LeetCode` `Medium` `模擬` `字串` ```cpp= /* -LeetCode format- Problem: 2512. Reward Top K Students Difficulty: Medium by Inversionpeter */ stringstream ss; class Solution { public: vector<int> topStudents(vector<string>& positive_feedback, vector<string>& negative_feedback, vector<string>& report, vector<int>& student_id, int k) { unordered_set <string> positives(positive_feedback.begin(), positive_feedback.end()), negatives(negative_feedback.begin(), negative_feedback.end()); unordered_map <int, int> scores; vector <vector <int>> students; vector <int> answers; string nowWord; for (int i = 0; i != report.size(); ++i) { ss.clear(); ss.str(report[i]); while (ss >> nowWord) if (positives.count(nowWord)) scores[student_id[i]] += 3; else if (negatives.count(nowWord)) --scores[student_id[i]]; } for (auto [id, score] : scores) students.push_back({ -score, id }); sort(students.begin(), students.end()); for (int i = 0; i < k; ++i) answers.push_back(students[i][1]); return answers; } }; ```