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:

3
1111111
The Testing Book
Yue Chen
test code debug sort keywords
ZUCS Print
2011
3333333
Another Testing Book
Yue Chen
test code sort keywords
ZUCS Print2
2012
2222222
The Testing Book
CYLL
keywords debug book
ZUCS Print2
2011
6
1: The Testing Book
2: Yue Chen
3: keywords
4: ZUCS Print
5: 2011
3: blablabla

Sample Output:

1: The Testing Book
1111111
2222222
2: Yue Chen
1111111
3333333
3: keywords
1111111
2222222
3333333
4: ZUCS Print
1111111
5: 2011
1111111
2222222
3: blablabla
Not Found
先声明一点,如果用int存id,输出一定要是7位,不够前补零,本来可以很快做出来,结果搞了半天还以为是char[]作为string传到map有问题(始终用的同一个字符数组),其次题目c++编译器里gets不支持了,
这道题字符读入比较麻烦,题目中要求把每个信息孤立进行记录不交叉,查询的时候也是根据编号查特定项信息,所以用一个map数组,记录不同项中的字符串映射,映射到特定的set,每个字符串对应一个set,记录
其包含的编号,查询也是根据映射去找,按顺序输出即可。 代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
using namespace std;
#define inf 0x3f3f3f3f
int n,m,id,c[];
set<int> mp[][];
map<string,int> po[];
string s;
char str[];
int main() {
cin>>n;
for(int i = ;i < n;i ++) {
cin>>id;
getchar();
getline(cin,s);///title
if(!po[][s])po[][s] = ++ c[];
mp[][po[][s]].insert(id);
getline(cin,s);///author
if(!po[][s])po[][s] = ++ c[];
mp[][po[][s]].insert(id);
int ss = ;///key words
while((str[ss ++] = getchar())) {
if(str[ss - ] == ' ') {
str[ss - ] = ;
ss = ;
s = str;
if(!po[][s])po[][s] = ++ c[];
mp[][po[][s]].insert(id);
}
else if(str[ss - ] == '\n') {
str[ss - ] = ;
ss = ;
s = str;
if(!po[][s])po[][s] = ++ c[];
mp[][po[][s]].insert(id);
break;
}
}
getline(cin,s);///publisher
if(!po[][s])po[][s] = ++ c[];
mp[][po[][s]].insert(id);
getline(cin,s);///year
if(!po[][s])po[][s] = ++ c[];
mp[][po[][s]].insert(id);
}
cin>>m;
getchar();
for(int i = ;i < m;i ++) {
getline(cin,s);
cout<<s<<endl;
int num = s[] - '';
int d = po[num][s.substr(,s.size())];
if(!d) {
printf("Not Found\n");
}
else {
for(set<int>::iterator it = mp[num][d].begin();it != mp[num][d].end();it ++) {
printf("%07d\n",*it);
}
}
}
}

1022 Digital Library (30)(30 分)的更多相关文章

  1. PAT 甲级 1022 Digital Library (30 分)(字符串读入getline,istringstream,测试点2时间坑点)

    1022 Digital Library (30 分)   A Digital Library contains millions of books, stored according to thei ...

  2. 1022 Digital Library (30 分)

    1022 Digital Library (30 分)   A Digital Library contains millions of books, stored according to thei ...

  3. pat 甲级 1022. Digital Library (30)

    1022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Di ...

  4. PAT 1022 Digital Library[map使用]

    1022 Digital Library (30)(30 分) A Digital Library contains millions of books, stored according to th ...

  5. 1022 Digital Library——PAT甲级真题

    1022 Digital Library A Digital Library contains millions of books, stored according to their titles, ...

  6. PAT Advanced 1022 Digital Library (30 分)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

  7. 1022. Digital Library (30)

    A Digital Library contains millions of books, stored according to their titles, authors, key words o ...

  8. 1022. Digital Library (30) -map -字符串处理

    题目如下: A Digital Library contains millions of books, stored according to their titles, authors, key w ...

  9. 1022 Digital Library (30)(30 point(s))

    problem A Digital Library contains millions of books, stored according to their titles, authors, key ...

随机推荐

  1. 安装android Studio和运行react native项目(跳坑篇)

    1.需配环境变量,值为sdk的地址. ANDROID_HOME  值:E:\Users\HP\AppData\Local\Android\sdk 2.下载gradle-2.14.1-all.zip 包 ...

  2. Android-BroadcastReceiver具体解释

    什么是Broadcast Broadcast即广播,在Android广播是很重要的功能.比如我们想在系统开机之后做某些事情.监控手机的电量.监控手机的网络状态等等.这些功能都须要用到广播.当然我们也能 ...

  3. IOS连接

    http://www.wuleilei.com/blog/323 不错 http://blog.csdn.net/totogo2010/ http://blog.csdn.net/totogo2010 ...

  4. eclipse tasks

    tasks可以在代码里增加标识,通过tasks view可以快速的找到这些标识的地方,有助于提高开发效率和代码管理. 通过Eclipse的 Window==>Show View==>Tas ...

  5. 【BZOJ5018】[Snoi2017]英雄联盟 背包

    [BZOJ5018][Snoi2017]英雄联盟 Description 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不了网友们的嘲讽,决定变强了 ...

  6. 【BZOJ4269】再见Xor 高斯消元

    [BZOJ4269]再见Xor Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行一个正整 ...

  7. thinkphp5, 省略index.php

    Apache:1. httpd.conf配置文件中加载了mod_rewrite.so模块2. AllowOverride None 将None改为 All3. 把下面的内容保存为.htaccess文件 ...

  8. Python菜鸟之路:Python基础-内置函数补充

    常用内置函数及用法: 1. callable() def callable(i_e_, some_kind_of_function): # real signature unknown; restor ...

  9. 三款查看class文件结构的工具

    classpy JavaClassViewer jclasslib

  10. html5 canvas做的图表插件

    用highchart的时候发现它是用svg来画图的,那么用canvas来做怎么样的. 以前做AS图表插件的时候,绘制图画主要用容器的Graphics对象来绘制,而canvas的context和Grap ...