1039 Course List for Student (25point(s)) Easy only once

基本思想:

水题,用map可能会超标,范例代码和自己思想类似;

关键点:

无;

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<vector> 
#include<string>
#include<math.h>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
using namespace std;

int n, k;

const int maxn = 500000;
vector<int> vec[maxn];
vector<string>query;

int change(string s) {
	int index = 0;
	for (int i = 0; i < 4; i++) {
		if (i == 3) {
			index = index * 26 + (s[i] - '0');
		}
		else {
			index = index * 26 + (s[i] - 'A');
		}
	}
	return index;
}

int main() {
	cin >> n >> k;
	int a, b;
	string s;
	for (int i = 0; i < k; i++) {
		cin >> a >> b;
		for (int j = 0; j < b; j++) {
			cin >> s;
			int index = change(s);
			vec[index].push_back(a);
		}
	}
	for (int i = 0; i < maxn; i++) {
		if (vec[i].size() != 0) {
			sort(vec[i].begin(), vec[i].end());
		}
	}
	while (cin >> s) {
		query.push_back(s);
	}
	for (int i = 0; i < query.size(); i++) {
		cout << query[i];
		int index = change(query[i]);
		cout << " " << vec[index].size();
		for (int j = 0; j < vec[index].size(); j++) {
			cout<<" " << vec[index][j];
		}
		cout << endl;
	}
	return 0;
}

  

猜你喜欢

转载自www.cnblogs.com/songlinxuan/p/12327908.html