/*
思路:map<string, int> 与 dequeue<string> 配合使用
1. 创建 map<string, int> 表, 键是文件名加行号的组合, 值 是 出现的次数
2. 创建 dequeue<string>, 像其中插入 文件名加行号的组合, 并维持其大小不超过八
3. 注意对输入字符串的处理,
a. 首先用 str.find_last_of('\\') 获取最后一个反斜杠的位置
b. 判断文件名是否大于16个字符,超过16个的话,需要截断。
*/
#include <deque>
#include<iostream>
#include <map>
using namespace std;
int main(){
string str;
map<string, int> mymap;
deque<string> deq;
while(getline(cin, str)){
int pos = str.find_last_of('\\');
str = str.substr(pos+1);
pos = str.find_last_of(' ');
if(pos > 16){
str = str.substr(pos-16);
}
if(mymap.find(str) == mymap.end()){
deq.push_back(str);
}
if(deq.size() > 8){
deq.pop_front();
}
mymap[str]++;
}
for(auto s : deq){
cout << s << " " << mymap[s] << endl;
}
return 0;
}