PAT 1039. Course List for Student (25)

http://www.patest.cn/contests/pat-a-practise/1039

#include<cstdio>
#include<map>
#include<set>
#include<string>
using namespace std;

int n, k;
char str[20];
int myhash(char *s) {
    return (s[0] - 'A') * 26 * 26 * 10 + (s[1] - 'A') * 26 * 10 + (s[2] - 'A') * 10 + s[3] - '0';
}
map<int, set<int> > table;
int main() {
    scanf("%d%d", &n, &k);
    for(int i = 0; i < k; ++i) {
        int course, m;
        scanf("%d%d", &course, &m);
        for(int j = 0; j < m; ++j) {
            scanf("%s", str);
            table[myhash(str)].insert(course);
        }
    }
    for(int i = 0; i < n; ++i) {
        scanf("%s", str);
        set<int> courses = table[myhash(str)];
        int size = courses.size();
        printf("%s %d", str, size);
        for(set<int>::iterator iter = courses.begin(); iter != courses.end(); ++iter) {
            printf(" %d", *iter);
        }
        puts("");
    }
    return 0;
}

 

posted @ 2015-07-31 09:59  ACSeed  Views(152)  Comments(0)    收藏  举报