题目链接:
PAT1047
注意:
数据量最多可以达到40000,所以我们用scanf()和printf(),否则最后一个测试点会超时.
代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<vector<string> > v;
int main(){
scanf("%d %d",&n,&m); //输入学生总数和课程总数
v.resize(m);
for(int i = 0;i<n;++i){
string str;
int num;
//不要想着在输入的时候处理字符串.将字符处理好之后,再处理
cin>>str>>num;
for(int j = 0;j<num;++j){
int cnt;
scanf("%d",&cnt);
v[cnt-1].push_back(str);
}
}
for(int i=0;i<m;++i){
sort(v[i].begin(), v[i].end(), [](string a,string b) { return a<b; }); //字典序从小到大排序
printf("%d %d\n",i+1,v[i].size());
for(int j = 0;j<v[i].size();++j){
printf("%s\n",v[i][j].c_str());
}
}
return 0;
}