学会使用map、set这些构件~
坑点1:传参时使用引用,否则速度太慢会超时——直接影响最后一个测试点(4)
坑点2:注意ID输出时 %07d ——影响后两个测试点(3和4)
#include <bits/stdc++.h>
using namespace std;
map<string,set<int> > tmap,amap,kmap,pmap,ymap;
void query(map<string,set<int> >& m,string str)
{
if(m.find(str)==m.end())
cout<<"Not Found"<<endl;
else
for(set<int>::iterator i=m[str].begin();i!=m[str].end();i++)
printf("%07d\n",*i);
}
int main(void)
{
int N,id,M,p;
string str;
cin>>N;
for(int i=0;i<N;i++)
{
cin>>id;
getchar();
getline(cin,str); //title
tmap[str].insert(id);
getline(cin,str); //author
amap[str].insert(id);
while(cin>>str)
{
kmap[str].insert(id);
char c=getchar();
if(c=='\n') break;
}
getline(cin,str); //publisher
pmap[str].insert(id);
cin>>str;
ymap[str].insert(id);
}
cin>>M;
for(int i=0;i<M;i++)
{
cin>>p;
getchar();getchar();
getline(cin,str);
cout<<p<<": "<<str<<endl;
switch(p)
{
case 1:query(tmap,str);break;
case 2:query(amap,str);break;
case 3:query(kmap,str);break;
case 4:query(pmap,str);break;
case 5:query(ymap,str);break;
}
}
}