タイトル説明
浙江大学には40000人の学生がおり、2500のコースを提供しています。これで、各学生の登録済みコースリストが与えられたので、すべてのコースの学生名リストを出力することになっています。
入る
各入力ファイルには、1つのテストケースが含まれています。いずれの場合も、最初の行には2つの数値が含まれています。N(<= 40000)は学生の総数、K(<= 2500)はコースの総数です。次にN行が続き、それぞれに学生の名前(3つの大文字の英語文字と1桁の数字)、この学生が登録したコースの数である正の数C(<= 20)が含まれ、その後にCコースが続きます。数字。簡単にするために、コースには1からKまでの番号が付けられています。
出力
テストケースごとに、すべてのコースの学生名リストをコース番号の昇順で印刷します。コースごとに、まずコース番号と登録学生数をスペースで区切って1行に印刷します。次に、生徒の名前をアルファベット順に出力します。それぞれの名前は1行を占めます。
サンプル入力コピー
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 ZOE
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector<string> v[3000];
string s;
int n,k,m,x;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>s>>m;
while(m--)
{
cin>>x;
v[x].push_back(s);
}
}
for(int i=1;i<=k;i++)
{
int len=v[i].size();
cout<<i<<" "<<len<<endl;
sort(v[i].begin(),v[i].end());
for(int j=0;j<len;j++)
cout<<v[i][j]<<endl;
}
return 0;
}