PAT 甲级 A1047 (2019/02/22)

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<vector>
 5 using namespace std;
 6 const int MAXN = 40010;
 7 const int MAXC = 2510;
 8 vector<int> Courses[MAXC];
 9 char StuName[MAXN][5];
10 bool cmp(int a, int b){
11     //按照名字典序从小到大排序 
12     return strcmp(StuName[a], StuName[b]) < 0;
13 }
14 int main(){
15     int N, K, SelectCourseNumber, CourseIndex;
16     scanf("%d %d", &N, &K);        //学生人数及课程数 
17     for(int i = 0; i < N; i++){
18         scanf("%s %d", StuName[i], &SelectCourseNumber);    //学生姓名及选课数 
19         for(int j = 0; j < SelectCourseNumber; j++){
20             scanf("%d", &CourseIndex);        //选择的课程编号 
21             Courses[CourseIndex].push_back(i);        //将学生 i 加入第 CourseIndex门课中 
22         }
23     }
24     for(int i = 1; i <= K; i++){
25         printf("%d %d\n", i, Courses[i].size());    //第 i 门课的学生人数 
26         sort(Courses[i].begin(), Courses[i].end(), cmp);    //对第 i 门课的学生排序 
27         for(int j =0 ; j< Courses[i].size(); j++){
28             printf("%s\n", StuName[Courses[i][j]]);    //输出学生姓名 
29         }    
30     }
31     return 0;
32 }

猜你喜欢

转载自www.cnblogs.com/zjsaipplp/p/10417622.html