现在的位置: 首页 > 综合 > 正文

浙大PAT 1022题 1022. Digital Library

2018年05月26日 ⁄ 综合 ⁄ 共 1672字 ⁄ 字号 评论关闭
/*
use map<string,set<string> > 
string substr(int start,int len) or substr(int start);
string find(char c) return index of first,or -1 if none;
cin.ignore() clear cache(such as '\n') in cin;
*/
#include<iostream>
#include<cstdlib>
#include<map>
#include<string>
#include<set>
using namespace std;
map<string,set<string> > title,author,key,publisher,year;
set<string>::iterator it;
int main(){
    int i,j,n,m; 
    cin>>n;
    cin.ignore();
    string ii,tt,aa,kk,pp,yy;
    for(i=0;i<n;i++){
       getline(cin,ii);
       getline(cin,tt);
       getline(cin,aa);
       getline(cin,kk);
       getline(cin,pp);
       getline(cin,yy);
       title[tt].insert(ii);  
       author[aa].insert(ii); 
       int spaceid=kk.find(' ');
       while(spaceid>0){
           string one=kk.substr(0,spaceid);
           key[one].insert(ii); 
           kk=kk.substr(spaceid+1);
           spaceid=kk.find(' ');
       }
       key[kk].insert(ii); 
       publisher[pp].insert(ii);  
       year[yy].insert(ii);                  
    }
    cin>>m;
    cin.ignore();
    int qid;
    string qstr,query;
    for(i=0;i<m;i++){
       getline(cin,qstr);
       qid=qstr[0]-'0';
       query=qstr.substr(3);
       cout<<qstr<<endl;
       if(qid==1){
           if(title[query].size()==0){
               cout<<"Not Found"<<endl;
               continue;
           }
           for(it=title[query].begin();it!=title[query].end();it++){
               cout<<*it<<endl;
           }
       } 
       else  if(qid==2){
           if(author[query].size()==0){
               cout<<"Not Found"<<endl;
               continue;
           }
           for(it=author[query].begin();it!=author[query].end();it++){
               cout<<*it<<endl;
           }
       }
       else  if(qid==3){
           if(key[query].size()==0){
               cout<<"Not Found"<<endl;
               continue;
           }
           for(it=key[query].begin();it!=key[query].end();it++){
               cout<<*it<<endl;
           }
       }         
       else  if(qid==4){
           if(publisher[query].size()==0){
               cout<<"Not Found"<<endl;
               continue;
           }
           for(it=publisher[query].begin();it!=publisher[query].end();it++){
               cout<<*it<<endl;
           }
       }         
       else  if(qid==5){
           if(year[query].size()==0){
               cout<<"Not Found"<<endl;
               continue;
           }
           for(it=year[query].begin();it!=year[query].end();it++){
               cout<<*it<<endl;
           }
       }                   
    }
    system("pause");
    return 0; 
}

抱歉!评论已关闭.