PAT-A-1022. Digital Library (30)
来源:互联网 发布:复杂网络节点介数 编辑:程序博客网 时间:2024/06/05 16:44
1022. Digital Library (30)
A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number as its ID. Given any query from a reader, you are supposed to output the resulting books, sorted in increasing order of their ID's.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (<=10000) which is the total number of books. Then N blocks follow, each contains the information of a book in 6 lines:
- Line #1: the 7-digit ID number;
- Line #2: the book title -- a string of no more than 80 characters;
- Line #3: the author -- a string of no more than 80 characters;
- Line #4: the key words -- each word is a string of no more than 10 characters without any white space, and the keywords are separated by exactly one space;
- Line #5: the publisher -- a string of no more than 80 characters;
- Line #6: the published year -- a 4-digit number which is in the range [1000, 3000].
It is assumed that each book belongs to one author only, and contains no more than 5 key words; there are no more than 1000 distinct key words in total; and there are no more than 1000 distinct publishers.
After the book information, there is a line containing a positive integer M (<=1000) which is the number of user's search queries. Then M lines follow, each in one of the formats shown below:
- 1: a book title
- 2: name of an author
- 3: a key word
- 4: name of a publisher
- 5: a 4-digit number representing the year
Output Specification:
For each query, first print the original query in a line, then output the resulting book ID's in increasing order, each occupying a line. If no book is found, print "Not Found" instead.
Sample Input:31111111The Testing BookYue Chentest code debug sort keywordsZUCS Print20113333333Another Testing BookYue Chentest code sort keywordsZUCS Print220122222222The Testing BookCYLLkeywords debug bookZUCS Print2201161: The Testing Book2: Yue Chen3: keywords4: ZUCS Print5: 20113: blablablaSample Output:
1: The Testing Book111111122222222: Yue Chen111111133333333: keywords1111111222222233333334: ZUCS Print11111115: 2011111111122222223: blablablaNot Found
#include<iostream>#include<cstdio>#include<string>#include<map>#include<stdio.h>#include<set>using namespace std;map<string, set<int> > mptitle, mpauthor, mpkey, mppub, mpyear;void query(map<string, set<int> > &mp, string &s){ if (mp.find(s) == mp.end()) { printf("Not Found\n"); } else { for (set<int>::iterator it = mp[s].begin(); it != mp[s].end(); it++) printf("%07d\n", *it); }}int main(){ int n; //cin >> n; scanf("%d", &n); char c; int id; string str; string title, author, key, pub, year; for (int i = 0; i < n; i++) { //cin >> id; //cin.get(); scanf("%d", &id); getchar(); getline(cin, title); mptitle[title].insert(id); getline(cin, author); mpauthor[author].insert(id); while (cin >> key) { mpkey[key].insert(id); c = getchar(); if (c == '\n') break; } getline(cin, pub); mppub[pub].insert(id); getline(cin, year); mpyear[year].insert(id); } int num; cin >> num; int type; for (int i = 0; i < num; i++) { scanf("%d: ", &type); getline(cin, str); //cout << type << ": " << str << endl; printf("%d: ", type); cout << str << endl; if (type == 1) query(mptitle, str); else if (type == 2) query(mpauthor, str); else if (type == 3) query(mpkey, str); else if (type == 4) query(mppub, str); else query(mpyear, str); } return 0;}
- PAT A 1022. Digital Library (30)
- PAT(A) - 1022. Digital Library (30)
- PAT-A-1022. Digital Library (30)
- PAT 1022. Digital Library (30)
- pat 1022. Digital Library (30)
- PAT 1022. Digital Library (30)
- PAT 1022. Digital Library (30)
- PAT 1022. Digital Library (30)
- 【PAT】1022. Digital Library (30)
- [pat]1022. Digital Library (30)
- pat 1022. Digital Library
- PAT 1022. Digital Library
- PAT--1022. Digital Library
- PAT 1022. Digital Library
- 【PAT】1022. Digital Library
- 【PAT Advanced Level】1022. Digital Library (30)
- PAT习题解:1022. Digital Library (30)
- 【PAT甲级】1022. Digital Library (30)
- ExpandableListview的三级列表的数据加载及刷新
- Problem A: 动态规划基础题目之数字三角形
- 输出结果的优先级与变量提升
- C语言通过线程实现回调机制
- DOM对象对xml文件的读取和写入
- PAT-A-1022. Digital Library (30)
- java基础知识(八)
- MySQL索引概貌
- 原子操作
- 作业5
- gcc常用命令选项
- 560. Subarray Sum Equals K leetcode
- Delphi 设置或者检查应用程序自动启动功能
- 完美解决非MBR引导下的WIN7激活问题