fork download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. void hhh() {
  6. ios_base::sync_with_stdio(0);
  7. cin.tie(0);
  8. }
  9.  
  10. typedef long long ll;
  11.  
  12. int main() {
  13. hhh();
  14.  
  15. int n;
  16. cin >> n;
  17. cin.ignore();
  18.  
  19. map<int, set<string>, greater<int>> scoreMp; // điểm -> tập tên, giảm dần
  20. map<string, int> nameMp; // tên -> điểm
  21.  
  22. for (int i = 0; i < n; i++) {
  23. string name;
  24. int score;
  25. cin >> name >> score;
  26. nameMp[name] = score;
  27. scoreMp[score].insert(name);
  28. }
  29.  
  30. int q;
  31. cin >> q;
  32. cin.ignore();
  33.  
  34. while (q--) {
  35. string ordered;
  36. getline(cin, ordered);
  37.  
  38. if (ordered.size() == 1) { // chỉ có "1" thì in tên cao điểm nhất
  39. auto it = scoreMp.begin(); // điểm cao nhất
  40. cout << *it->second.begin() << "\n"; // tên nhỏ nhất theo từ điển
  41. } else {
  42. string cmd, name;
  43. int score;
  44. stringstream ss(ordered);
  45. ss >> cmd >> name >> score;
  46.  
  47. // Nếu tên đã tồn tại thì xoá điểm cũ
  48. if (nameMp.count(name)) {
  49. int oldScore = nameMp[name];
  50. scoreMp[oldScore].erase(name);
  51. if (scoreMp[oldScore].empty()) {
  52. scoreMp.erase(oldScore);
  53. }
  54. }
  55.  
  56. // Cập nhật điểm mới
  57. nameMp[name] = score;
  58. scoreMp[score].insert(name);
  59. }
  60. }
  61.  
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0.01s 5320KB
stdin
3
Chi 85
Trang 90
Huong 75
7
T
U Chi 95
T
U Hao 90
T
U Long 100
T
stdout
Trang
Chi
Chi
Long