输入规范:
每个输入文件包含一个测试用例。对于每种情况,第一行包含2个数字:N 学生总数,以及K 课程总数。然后N每一行都有一个学生的名字(3个英文字母加一个数字),一个正数。C 这是这个学生注册的课程数量,然后是C课程编号。为了简单起见,课程编号从1到K .
输出规格:
对于每一个测试案例,按课程编号的增加顺序打印所有课程的学生名单。对于每门课程,先在一行中打印出课程编号和注册学生的人数,隔开一个空格。然后按字母顺序输出学生的名字。每个名字占据一条线。
输入
10 5
ZOE1 2 4 5
ANN0 3 5 2 1
BOB5 5 3 4 2 1 5
JOE4 1 2
JAY9 4 1 2 5 4
FRA8 3 4 2 5
DON2 2 4 5
AMY7 1 5
KAT3 3 5 4 2
LOR6 4 2 4 1 5
输出
1 4
ANN0
BOB5
JAY9
LOR6
2 7
ANN0
BOB5
FRA8
JAY9
JOE4
KAT3
LOR6
3 1
BOB5
4 7
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1
5 9
AMY7
ANN0
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1
#include<bits/stdc++.h>
using namespace std;
struct node{
char name[4];
};
vector<node>selectcourse[2600];
bool cmp( node a, node b){
return strcmp(a.name, b.name) < 0;
}
int main(){
int n, k;
cin >> n >> k;
for( int i = 0; i < n; i++){
node student;
int c;
cin >>student.name >>c;
for( int j = 0; j < c; j++){
int p;
cin >>p;
selectcourse[p].push_back(student);
}
}
for( int i = 1; i < k+1; i++){
cout << i <<" "<< selectcourse[i].size() <<endl;
sort(selectcourse[i].begin(), selectcourse[i].end(),cmp);
for( vector<node>::iterator it = selectcourse[i].begin(); it != selectcourse[i].end(); it++){
cout << (*it).name<<endl;
}
}
return 0;
}
请问我的问题出在哪里呢?谢谢大家了!