题目描述:
你的任务是模拟一个图书管理系统。首先输入若干图书的标题和作者(标题各不相同,以END结束),然后是若干指令:BORROW指令表示借书,RETURN指令表示还书,SHELVE指令表示把所有已归还但还未上架的图书排序后一次插入书架并输出图书标题和插入位置(可能是第一本书或者某本书的后面,也可能是最前面)。
图书排序的方法是按作者从小到大排,再按标题从小到大排。在处理第一条指令之前,你应当将所有图书按照这种方式排列。
#include<cstdio>
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<string>
#include<sstream>
using namespace std;
set<pair<string, string> > lbr; // first is writer, second is book ,图书馆所有书
map<string, int> IDcache; // 把书名映射成ID书号(按顺序)
vector<string> BOOKcache; // 根据ID取书
set<int> in_lbr; // 图书馆现存的书
set<int> borrowed; // 被借出的书
set<int> back; // 已归还未上架的书
int main(){
#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt",