1039 Course List for Student (25分)

在这里插入图片描述
在这里插入图片描述

#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
int queryNum, courseNum;
set<int> take[26 * 26 * 26 * 10];
int getPos(char *name) {	//将三个大写字母、一个数字组成的名字hash到数组中
	return ( (name[0] - 'A') * 26 * 26 + (name[1] - 'A') * 26 + (name[2] - 'A') ) * 10 + (name[3] - '0');
}
int main() {
	scanf("%d %d", &queryNum, &courseNum);
	char name[5];
	for (int i = 0;i < courseNum;i++) {
		int courseId, studentNum;
		scanf("%d %d", &courseId, &studentNum);
		for (int j = 0;j < studentNum;j++) {
			scanf("%s", &name);
			take[getPos(name)].insert(courseId);
		}
	}
	for (int i = 0;i < queryNum;i++) {
		scanf("%s", &name);
		set<int> *p = &take[getPos(name)];
		printf("%s %d", name, p->size());
		for (set<int>::iterator it = p->begin();it != p->end();it++) {
			printf(" %d", *it);
		}
		printf("\n");
	}
}
发布了61 篇原创文章 · 获赞 0 · 访问量 815

猜你喜欢

转载自blog.csdn.net/weixin_43116322/article/details/103910757
今日推荐