一开始超时,感觉时间主要消耗在C++的io速度和string处理上,5个字符没必要使用string
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<deque>
using namespace std;
struct node
{
char name[5];
node(char*p){strcpy(name,p);}
bool operator<(const node&x)const{return strcmp(name,x.name)<0;}
};
deque<node>st[2502];
int main()
{
int n, m;
scanf("%d%d",&n,&m);
char p[5];
int cnt,cur;
while(n--)
{
scanf("%s%d",p,&cnt);
while(cnt--)
{
scanf("%d",&cur);
st[cur].push_back(node(p));
}
}
for(int i=1;i<=m;++i)
{
if(st[i].empty())
printf("%d 0\n",i);
else
{
printf("%d %d\n",i,st[i].size());
sort(st[i].begin(),st[i].end());
for(node&x:st[i])
printf("%s\n",x.name);
}
}
return 0;
}