#include <bits/stdc++.h>
using namespace std;
const int M=26*26*26*10;
vector<int> selectCourse[M];
int getID(char name[])
{
int id=0;
for(int i=0;i<3;i++)
{
id=id*26+(name[i]-'A');
}
id=id*10+name[3]-'0';
return id;
}
int main()
{
int m,n;
char name[5];
scanf("%d%d",&m,&n);
for(int i=0;i<n;i++)
{
int k,h;
scanf("%d%d",&k,&h);
for(int i=0;i<h;i++)
{
scanf("%s",name);
int id=getID(name);
selectCourse[id].push_back(k);
}
}
for(int i=0;i<m;i++)
{
scanf("%s",name);
int id=getID(name);
sort(selectCourse[id].begin(),selectCourse[id].end());
printf("%s %d",name,selectCourse[id].size());
for(int j=0;j<selectCourse[id].size();j++)
printf(" %d",selectCourse[id][j]);
printf("\n");
}
return 0;
}
用map和string会超时,还不知道为什么(最后一组数据比较庞大)
用vector来减少空间损耗
9.8日又重新做了一遍
读题没有问题
但是如何进行数组存储遇到了问题
还是看了题解
就是动态vector二维数组
按照每个姓名输进去
这里要把字符型的姓名转换为int整形的
main函数外定义一个函数