参考大神的结合自己的,刚开始最大的坑就是unordered_map的输出顺序是不一定的,和插入顺序无关,且没有rbegin(),rend()迭代器*,靠,被这个坑了半天,大神的做法就是循环取余操作,这个不得不说秒啊想起了循环队列,我靠这可比我再用一个map<int,string>记录排序先后巧妙多了,而且空间复杂度一直是n+8

#include <bits/stdc++.h>
using namespace std;
int main(int argc,char *argv[])
{
    string str;
    unordered_map<string,int> unmap;
    vector<string> record(8,"");
    int start_index=0;
    string row="";
    while(cin>>str>>row)
    {
        int len=str.size();
        int j=len-1;
        for(;j>=0;j--)
        {
            if(str[j]=='\\'||len-j==17)break;
        }
        string error=str.substr(j+1,len-j-1)+" "+row;
        
        if(unmap[error]==0)
        {
            record[start_index]=error;
            start_index=(start_index+1)%8;
        }
        unmap[error]++;  
    }
    for(int i=0;i<8;i++)
    {
        if(record[start_index] != ""){
            cout << record[start_index] << " " << unmap[record[start_index]] <<endl;
        }
        start_index = (start_index + 1) % 8;
    } 
}