#include <iostream>
#include <sstream>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include <queue>
using namespace std;
struct Record {
string name;
int line;
int cnt;
Record(string _name, int _line, int _cnt):name(_name),line(_line),cnt(_cnt){
}
};
int main() {
string path;
int line;
// name line count
unordered_map<string, Record*> hash;
queue<string> q;
while (cin >> path >> line) { // 注意 while 处理多个 case
stringstream ss(path);
string name;
while(getline(ss, name,'\\')){}
int pos = name.size() - 16;
string newName;
if(pos > 0){
newName = name.substr(pos, 16);
} else {
newName = name;
}
string key = newName + to_string(line);
if(hash.count(key) > 0){
hash[key]->cnt++;
} else {
hash[key] = new Record(newName,line,1);
q.push(key);
if(q.size() > 8){
q.pop();
}
}
}
while(!q.empty()){
auto rcd = hash[q.front()];q.pop();
cout << rcd->name << " " << rcd->line << " " << rcd->cnt << endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
使用队列用来记录,哈希表用来去重



京公网安备 11010502036488号