最后一个测试点数据太多了!!不能用cout和cin和string,要用char数组……可以用范围for语句
#include<bits/stdc++.h>
using namespace std;
int N, K;
char stuNum_stuName[40010][5] ;
vector<int> course_stuNums[2510];
bool cmp(int a, int b){
return strcmp(stuNum_stuName[a], stuNum_stuName[b]) < 0;
}
int main() {
cin >> N >> K;
for(int stuNum = 0;stuNum < N;++stuNum) {
int M;
scanf("%s %d", stuNum_stuName[stuNum], &M);
for(int j = 0;j < M;++j){
int course;
scanf("%d", &course);
course_stuNums[course].push_back(stuNum);
}
}
for(int course = 1;course <= K;++course){
sort(course_stuNums[course].begin(), course_stuNums[course].end(), cmp);
printf("%d %d\n", course, course_stuNums[course].size());
for(int stuNum: course_stuNums[course]) {
printf("%s\n", stuNum_stuName[stuNum]);
}
}
return 0;
}