题目
pata1047
题目思路
建立课程的vector数组,对每一个输入的学生将其加入到各个具体的课程中,之后按课程即可。需要注意的是在输出前要对同一课程的所有学生排序。
参考代码
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
char name[40010][5];
typedef struct{
char c[5];
}na;
vector <int> course[2510];
na nam[40010];
bool cmp(na n1,na n2);
int main()
{
int n=0,m=0,t=0,d=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
scanf("%s",name[i]);
scanf("%d",&t);
for(int j=0;j<t;j++)
{
scanf("%d",&d);
course[d].push_back(i);
}
}
for(int i=1;i<m+1;i++)
{
printf("%d %d",i,course[i].size());
if(i<m||course[i].size()!=0)
printf("\n");
for(int j=0;j<course[i].size();j++)
{
strcpy(nam[j].c,name[course[i][j]]);
}
sort(nam,nam+course[i].size(),cmp);
for(int j=0;j<course[i].size();j++)
{
printf("%s",nam[j].c);
if(j<course[i].size()-1||i<m)
printf("\n");
}
}
return 0;
}
bool cmp(na n1,na n2)
{
return strcmp(n1.c,n2.c)<0;
}