简单结构体,排个序 就是存的时候麻烦点,注意getline输入前面用个getchar()
#include<bits/stdc++.h>
#define inf 99999999
using namespace std;
struct node{
string id;
string b_title;
string b_author;
string b_keyword[10];
string b_pub;
string b_year;
}q[10005];
bool comp(node a,node b)
{
return a.id<b.id;
}
int main()
{
int n,a,b,m;
char ch;
cin>>n;
string s;
for(int i=1;i<=n;i++)
{
cin>>q[i].id;
getchar();
getline(cin,q[i].b_title);
getline(cin,q[i].b_author);
int k=0;
while(cin>>q[i].b_keyword[k])
{
k++;
ch=getchar();
if(ch=='\n')
break;
}
getline(cin,q[i].b_pub);
cin>>q[i].b_year;
}
sort(q+1,q+1+n,comp);
cin>>m;
int t;
for(int i=1;i<=m;i++)
{
scanf("%d: ",&t);
getline(cin,s);
int flag,w=0;
cout<<t<<": "<<s<<endl;
for(int j=1;j<=n;j++)
{
flag=0;
if(q[j].b_author==s)
flag=1;
if(q[j].b_title==s)
flag=1;
if(q[j].b_year==s)
flag=1;
if(q[j].b_pub==s)
flag=1;
for(int u=0;u<6;u++)
{
if(q[j].b_keyword[u]==s)
flag=1;
}
if(flag==1)
{
cout<<q[j].id<<endl;
w++;
}
}
if(w==0)
cout<<"Not Found"<<endl;
}
return 0;
}