#include <iostream> #include <map> #include <string> #include <utility> #include <queue> using namespace std; string get_filename(string& filepath) { //题取文件名 string res = ""; for (int i = filepath.length() - 1; i >= 0; i--) { //逆向查找到第一个斜杠 if (filepath[i] == '\\') break; res = filepath[i] + res; //将字符加到字符串前面 } if (res.length() > 16) //长度大于16的时候,截取后16位 res = res.substr(res.length() - 16, 16); return res; } int main() { map<pair<string, int>, int> filestore; string filepath; int line, num = 0; queue<pair<string, int>> q; while (cin >> filepath >> line) { string file_name = get_filename(filepath); pair<string, int> e = make_pair(file_name, line); if (!filestore.count(e)) { q.emplace(e); ++num; } ++filestore[e]; if (num > 8) { q.pop(); --num; } } for (int i = 0; i < 8; ++i) { if (!q.empty()) { pair<string, int> front_e = q.front(); q.pop(); int cx = filestore[front_e]; cout << front_e.first << ' ' << front_e.second << ' ' << cx << endl; } else { break; } } return 0; }