这道题思路较为简单,但是使用cin与cout会超时。需要使用scanf,printf和(string).c_str()的输出方法,减少运算时间,就可以通过了。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<unordered_map>
using namespace std;
const int N=40010,K=2510;
int main()
{
vector<string> course[K];
int n,m;
scanf("%d %d",&n,&m);
while(n--){
char name[4];
int k;
scanf("%s %d",name,&k);
while(k--){
int a;
scanf("%d",&a);
course[a].push_back(name);
}
}
for(int i=1;i<=m;i++){
printf("%d %d\n",i,course[i].size());
sort(course[i].begin(),course[i].end());
for(auto id:course[i]){
printf("%s\n",id.c_str());
}
}
return 0;
}