最开始用map,最后一个测试点勉勉强强没超时:384ms;用了unordered——map情况稍微好点:271ms。
另外如果不排序的话测试点2、5会过不去,我在这两个点学么了半天也没闹明白为啥不排序过不去(来自菜鸡的大写问号)……
#include<iostream>
#include<unordered_map>
#include<vector>
#include<algorithm>
using namespace std;
unordered_map<string, vector<int>>stu;
int main(void)
{
int N, K, ID, n;
char name[5];
scanf("%d %d", &N, &K);
while(K--){
scanf("%d %d", &ID, &n);
for (int j = 0; j < n; j++) {
scanf("%s", name);
stu[name].push_back(ID);
}
}
while(N--){
scanf("%s", name);
printf("%s %d", name, stu[name].size());
sort(stu[name].begin(), stu[name].end());
for (auto j:stu[name]) {
printf(" %d", j);
}
printf("\n");
}
return 0;
}