提交时间:2026-04-14 16:45:31

运行 ID: 436408

#include <iostream> #include <vector> #include <map> #include <algorithm> using namespace std; // 存储候选人信息 struct Person { string name; // 名字 int cnt; // 票数 }; // 排序规则(核心!) // 1. 票数多的排前面 // 2. 票数相同,字典序大的排前面 bool cmp(const Person &a, const Person &b) { if (a.cnt != b.cnt) { return a.cnt > b.cnt; } else { return a.name > b.name; // 字典序大的在前 } } int main() { int n; cin >> n; // 用 map 统计每个人的票数 map<string, int> mp; // 输入并统计 for (int i = 0; i < n; i++) { string s; cin >> s; mp[s]++; } // 转成 vector 方便排序 vector<Person> v; for (auto &p : mp) { v.push_back({p.first, p.second}); } // 排序 sort(v.begin(), v.end(), cmp); // 输出 for (auto &x : v) { cout << x.name << " " << x.cnt << endl; } return 0; }