【PAT甲级】1039. Course List for Student (25)

来源:互联网 发布:你怎么看待网络暴力 编辑:程序博客网 时间:2024/04/30 09:35
注:string, cin/cout, deque, map均超时,因此换成scanf, char[], vector,并使用数组映射,提高效率。
#include <stdio.h>#include <algorithm>#include <vector>using namespace std;int n, k;vector<int> m[26*26*26*10];int main(int argc, char *argv[]) {    scanf("%d %d", &n, &k);    int i, j;    for (i = 0; i < k; i++) {        int cid, cnt;        scanf("%d %d", &cid, &cnt);        for (j = 0; j < cnt; j++) {            char name[5];            scanf("%s", name);            int t = (name[0]-'A')*26*26*10+(name[1]-'A')*26*10+(name[2]-'A')*10+name[3]-'0';            m[t].push_back(cid);        }    }    for (i = 0; i < n; i++) {        char name[5];        scanf("%s", name);        int t = (name[0]-'A')*26*26*10+(name[1]-'A')*26*10+(name[2]-'A')*10+name[3]-'0';        printf("%s %d", name, int(m[t].size()));        if (m[t].size() == 0) {            printf("\n");            continue;        } else {            sort(m[t].begin(), m[t].end());            for (j = 0; j < m[t].size(); j++) {                printf(" %d", m[t][j]);            }            printf("\n");        }    }    return 0;}
0 0