第一提交最后一个测试点超时了,然后去百度上搜,搜来搜去说string会超时,所以用char,scanf和printf比cin和cout高效,但是经过尝试把输出名字时的cin改成printf就足以通过了。printf("%s\n",Class[i][j].c_str());
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#define MAXN 40000
#define MAXK 2501
using namespace std;
int main()
{
int N,K;
cin>>N>>K;
vector<string> Class[MAXK];
string name;
int cnt;
vector<int> courses;
for(int i=0;i<N;i++){
cin>>name>>cnt;
int num;
for(int j=0;j<cnt;j++){
cin>>num;
Class[num].push_back(name);
}
}
for(int i=1;i<=K;i++){
sort(Class[i].begin(),Class[i].end());
cout<<i<<" "<<Class[i].size()<<endl;
for(int j=0;j<Class[i].size();j++)
printf("%s\n",Class[i][j].c_str());
}
return 0;
}