#include<iostream>
#include<map>
#include<set>
#include<cstring>
#include<cstdio>
using namespace std;
map<string,set<int>> book;//string到set的映射,实际上应该对每一类建一个映射
int main()
{
int i,n,m;
int id,type;
string title,author,key,publisher,year;
cin>>n;//n本图书
for(i=0;i<n;i++)
{
cin>>id;//读入id
char c=getchar();//读入换行符,避免干扰getline
//book[id]
getline(cin,title);//书名
book[title].insert(id);//对应书名的集合加入id
getline(cin,author);//作者
book[author].insert(id);//对应作者的集合加入id
while(cin>>key)//关键字处理,cin读入关键字
{
book[key].insert(id);//对应关键字集合加入id
c=getchar();//读入空格或者换行符
if(c=='\n')break;//如果为换行符则退出关键字处理
}
getline(cin,publisher);//读入出版社
book[publisher].insert(id);//对应出版社集合加入id
cin>>year;//读入年份
book[year].insert(id);//对应年份集合加入id
}
string temp;
cin>>m;
for(i=0;i<m;i++)
{
scanf("%d: ",&type);//读入需要处理的类型
//char c=getchar();
getline(cin,temp);//读入字符串
cout<<type<<": "<<temp<<endl;//输出
//query(book,temp);
string str=temp;
if(book.find(str)==book.end())//按格式输出
{
cout<<"Not Found"<<endl;
}
else//找得到该字符串,则遍历该key对应的value集合,按7位输出id
{
for(set<int>::iterator it=book[str].begin();it!=book[str].end();it++)
{
printf("%07d\n",*it);
}
}
}
return 0;
}
pat甲1022 Digital Library
最新推荐文章于 2024-04-05 18:55:40 发布