题目描述
分析:
给出每个学生的选课情况,输出每门课选的人的名字,对于学生的名字采用char 的二维数组来存储,而对于每门课选的人则采用vector数组来存,vector里面存每个选这门课的学生的名字的序号。
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
char name[40005][5];
vector<int> course[2505];
bool cmp(int a,int b){
return strcmp(name[a],name[b])<0;
}
int main(){
int stunum,coursenum,c;
int num;
scanf("%d %d",&stunum,&coursenum);
for(int i=0;i<stunum;i++){
scanf("%s %d",name[i],&num);
for(int j=0;j<num;j++){
scanf("%d",&c);
course[c].push_back(i);
}
}
for(int j=1;j<=coursenum;j++){
printf("%d %d\n",j,course[j].size());
sort(course[j].begin(),course[j].end(),cmp);
for(int i=0;i<course[j].size();i++){
printf("%s\n",name[course[j][i]]);
}
}
return 0;
}