PAT a1039题解

来源:互联网 发布:mpiigaze数据集 编辑:程序博客网 时间:2024/06/05 23:59
#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int N = 40010;const int M = 26 * 26 * 26 * 10 + 1;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(){char name[5];int n, k;scanf("%d%d", &n, &k);for(int i = 0; i < k; i++){int course, x;scanf("%d%d", &course, &x);for(int j = 0; j < x; j++){scanf("%s", name);int id = getID(name);selectCourse[id].push_back(course);}}for(int i = 0; i < n; 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;}