也挺简单的,注意输出7位数,有格式要求
还可以用map<string, set<int> >
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<int,string> title;
map<int,string> author;
map<int,string> key;
map<int,string> publisher;
map<int,string> year;
int N;
int id;
string t,a,k,p,y;
scanf("%d",&N);
for(int n=0;n<N;n++)
{
scanf("%d",&id);
getchar();
getline(cin,t);
getline(cin,a);
getline(cin,k);
getline(cin,p);
getline(cin,y);
title[id]=t;
author[id]=a;
key[id]=k;
publisher[id]=p;
year[id]=y;
}
int M;
scanf("%d",&M);
string type;
string query;
getchar();
for(int m=0;m<M;m++)
{
int flag=0;
getline(cin,type,' ');
getline(cin,query);
map<int,string>::iterator it;
printf("%s\n",(type+" "+query).c_str());
if(type=="1:")
{
for(it=title.begin();it!=title.end();it++)
if(it->second==query)
{
flag=1;
printf("%07d\n",it->first);
}
}
if(type=="2:")
{
for(it=author.begin();it!=author.end();it++)
if(it->second==query)
{
flag=1;
printf("%07d\n",it->first);
}
}
if(type=="3:")
{
for(it=key.begin();it!=key.end();it++)
if(it->second.find(query)!=string::npos)
{
flag=1;
printf("%07d\n",it->first);
}
}
if(type=="4:")
{
for(it=publisher.begin();it!=publisher.end();it++)
if(it->second==query)
{
flag=1;
printf("%07d\n",it->first);
}
}
if(type=="5:")
{
for(it=year.begin();it!=year.end();it++)
if(it->second==query)
{
flag=1;
printf("%07d\n",it->first);
}
}
if(flag==0)
printf("Not Found\n");
}
}