1047 Student List for Course (25 point(s))

1047 Student List for Course (25 point(s))

题解

STL简单应用。使用map<id,set<string>> 会超时。原因在于时间复杂度达到1047 Student List for Course (25 point(s)) 。

降到1047 Student List for Course (25 point(s))就能过了。

#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN = 2500 + 10;
vector<string> res[MAXN];
int n, k;
string name;
int course, m;
int main() {
	scanf("%d%d", &n, &k);
	for(int i = 0; i < n; ++i) {
		cin >> name;
		scanf("%d", &m);
		for(int j = 0; j < m; ++j) {
			scanf("%d", &course);
			res[course].push_back(name);
		}
	}
	for(int i = 1; i <= k; ++i) {
		printf("%d %d\n", i, res[i].size());
		sort(res[i].begin(), res[i].end());
		for(int j = 0; j < res[i].size(); ++j)	printf("%s\n", res[i][j].c_str());
	}
	return 0;
}