Note
- 小技巧:使用字符串的下标代替字符串本身进行排序,可以减少消耗时间。
Code:
#include<bits/stdc++.h>
using namespace std;
char name[40005][5];
bool compare(int a,int b){
return strcmp(name[a],name[b])<0;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n,k,count,id;
scanf("%d%d",&n,&k);
vector<int> v[k+1];
for(int i=0;i<n;i++){
scanf("%s",name[i]);
scanf("%d",&count);
for(int j=0;j<count;j++){
scanf("%d",&id);
v[id].push_back(i);
}
}
for(int i=1;i<=k;i++){
printf("%d %d\n",i,v[i].size());
sort(v[i].begin(),v[i].end(),compare);
for(int j=0;j<v[i].size();j++)
printf("%s\n",name[v[i][j]]);
}
return 0;
}