1022 Digital Library
1022 Digital Library
知识点:
- getline(cin,string) 读取一行到字符串
- cin 后不会读取’\n’ 要getchar()
- 详情
code:
#include<unordered_map>
#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
unordered_map<string,vector<int>> ma[5];
int main(){
int n;cin>>n;
int id;string keys[5];
for(int i=0;i<n;i++){
cin>>id;getchar();
for(int k=0;k<5;k++){
getline(cin,keys[k]);
if(k==2){//特别判断 切片
int sn=keys[k].size(),p=0;
while(p<sn){
int q=p;
while(q<sn&&keys[k][q]!=' ') q++;
ma[k][keys[k].substr(p,q-p)].push_back(id);
p=q+1;
}
}
else ma[k][keys[k]].push_back(id);
}
}
for(int i=0;i<5;i++){
for(auto&[k,w]:ma[i]) sort(w.begin(),w.end());
}
int m;cin>>m;getchar();
string que;
for(int i=0;i<m;i++){
getline(cin,que);
cout<<que<<endl;
int t=que[0]-'0'-1;
vector<int>& w=ma[t][que.substr(3,que.size()-3)];
if(w.empty()) cout<<"Not Found\n";
else{
for(int k:w) printf("%07d\n",k);
}
}
return 0;
}