1022. Digital Library (30)PAT甲级

传送门

#include<iostream>
#include<set>
#include<map>
#include<string> 

using namespace std;


map<string,set<int> >mptitle,mpauthor,mpkeywords,mppub,mpyear;

void query(map<string,set<int> > &mp,const string &temp){
    if(mp.find(temp)==mp.end()) printf("Not Found\n");
    else{
        for(set<int>::iterator it=mp[temp].begin();it!=mp[temp].end();it++){
            printf("%07d\n",*it);
        }
    }
}

int main(){
    int n,id,m,type;
    string title,author,key,pub,year;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>id;
        getchar();
        getline(cin,title);
        mptitle[title].insert(id);
        getline(cin,author);
        mpauthor[author].insert(id);
        while(cin>>key){
            mpkeywords[key].insert(id);
            char c=getchar();
            if(c=='\n') break;
        }
        getline(cin,pub);
        mppub[pub].insert(id);
        getline(cin,year);
        mpyear[year].insert(id);
    }
    string temp;
    cin>>m;
    for(int i=0;i<m;i++){
        scanf("%d: ",&type);
        getline(cin,temp);
        cout<<type<<": "<<temp<<endl;
        if(type==1) query(mptitle,temp);
        else    if(type==2) query(mpauthor,temp);
        else    if(type==3) query(mpkeywords,temp);
        else    if(type==4) query(mppub,temp);
        else    query(mpyear,temp);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值