#1022. Digital Library (30)
如果直接暴力 只能得25分
但是用STL就是满分
比暴力代码量还少
关键是得会用
这里在map里面装了set,这是可以的
因为map就是用BST实现的
BST关键是key,也就是pair.first
所以pair.second写什么都无所谓了
#include <bits/stdc++.h>
using namespace std;
map<string, set<string> > mp;
struct Book
{
string id, title, author, publisher, year;
vector<string> keyWords;
void read()
{
getline(cin, id);
getline(cin, title);
mp[title].insert(id);
getline(cin, author);
mp[author].insert(id);
string s;
getline(cin, s);
stringstream ss(s);
while (ss >> s) {
mp[s].insert(id);
}
getline(cin, publisher);
mp[publisher].insert(id);
getline(cin, year);
mp[year].insert(id);
}
};
vector<Book> books;
void solve(string s)
{
if (mp.count(s)) {
for (string id : mp[s])
cout << id << endl;
}
else {
cout << "Not Found" << endl;
}
}
int main()
{
//freopen("in", "r", stdin);
int N;
scanf("%d\n", &N);
books.resize(N);
for (int i = 0; i < N; i++) {
books[i].read();
}
int M;
scanf("%d\n", &M);
for (int i = 0; i < M; i++) {
string s;
getline(cin, s);
cout << s << endl;
int x = s[0] - '0';
s = s.substr(3);
solve(s);
}
}