UVa230

/*
题意很容易理解,用set<author,book>来记录在架图书和归还的图书,这样顺序是按照题目要求的。
然后使用字典b2a记录图书的作者。
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<string.h>
#include<math.h>
#include<queue>
#include<unordered_map>
using namespace  std;

int main(){
    string s;
    unordered_map<string,string>b2a;
    set<pair<string,string>>dic,ret;
    while(getline(cin,s)&&s!="END"){
        auto pos=s.rfind('"');
        auto book=s.substr(0,pos+1),author=s.substr(pos+5);
        b2a[book]=author;
        dic.insert(make_pair(author,book));
    }
    while(getline(cin,s)&&s!="END"){
        if(s=="SHELVE"){
            for(auto &p:ret){
                auto pos=dic.lower_bound(p);
                if(pos==dic.begin())cout<<"Put "<<p.second<<" first"<<endl;
                else cout<<"Put "<<p.second<<" after "<<(*prev(pos)).second<<endl;
                dic.insert(p);
            }
            printf("END\n");
            ret.clear();
        }else{
            auto order=s.substr(0,6),book=s.substr(7);
            auto tmp=make_pair(b2a[book],book);
            if(order=="BORROW")dic.erase(dic.find(tmp));
            else if(order=="RETURN")ret.insert(tmp);
        }
    }
    return 0;
}


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值