模拟题
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;
struct Book{
char id[81];
char name[81];
char author[81];
vector<string> keywords;
char publisher[81];
char year[5];
};
vector<Book> buf;
bool cmp(Book a,Book c){
return strcmp(a.id,c.id)<0;
}
int main(){
int n,m;
while(scanf("%d",&n)!=EOF){
getchar();//取回车符
for(int i=0;i<n;i++){
Book b;
gets(b.id);
gets(b.name);
gets(b.author);
do{
char tmp[11];
scanf("%s",tmp);
b.keywords.push_back(tmp);
}while(getchar()!='\n');
gets(b.publisher);
gets(b.year);
buf.push_back(b);
}
sort(buf.begin(),buf.end(),cmp);
scanf("%d",&m);
while(m--){
int order;
bool find=false;
scanf("%d: ",&order);
char query[81];
gets(query);
printf("%d: %s\n",order,query);
for(int j=0;j<n;j++){
if(strcmp(query,buf[j].name)==0){
find=true;
puts(buf[j].id);
}
else if(strcmp(query,buf[j].author)==0){
find=true;
puts(buf[j].id);
}
else if(strcmp(query,buf[j].publisher)==0){
find=true;
puts(buf[j].id);
}
else if(strcmp(query,buf[j].year)==0){
find=true;
puts(buf[j].id);
}
else{
for(int k=0;k<buf[j].keywords.size();k++){
if(strcmp(query,buf[j].keywords[k].c_str())==0){
find=true;
puts(buf[j].id);
break;
}
}
}
}
if(!find)
printf("Not Found\n");
}
}
return 0;
}