【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

用map+set写个模拟就好。
3个区域
书架、桌子、别人的手上。
其中前两个区域的书都能借出去。

【代码】

#include <bits/stdc++.h>
using namespace std; set <pair<string, string> > mset1,mset2,mset3;
map<string, string> author;
string s1,s2,s3; int main()
{
//freopen("F:\\rush.txt", "r", stdin);
while (getline(cin,s1))
{
if(s1 == "END") break;
s2 = "";
int now = 1;
while (s1[now] != '"') s2 += s1[now++];
assert(s1[now] == '"');
now+=5;
s3 = s1.substr(now);
mset1.insert(make_pair(s3, s2));
author[s2] = s3;
}
while (getline(cin, s1))
{
if (s1 == "END") break;
if (s1[0] == 'B')
{
s2 = s1.substr(8);
s2.erase((int)s2.size() - 1);
auto it = mset1.find(make_pair(author[s2], s2));
if (it != mset1.end())
{
mset3.insert((*it));
mset1.erase(it);
}
else {
it = mset2.find(make_pair(author[s2], s2));
if (it != mset2.end())
{
mset3.insert((*it));
mset2.erase(it);
}
}
}
else
if (s1[0] == 'R')
{
s2 = s1.substr(8);
s2.erase((int)s2.size() - 1);
auto it = mset3.find(make_pair(author[s2], s2));
if (it != mset3.end())
{
mset2.insert((*it));
mset3.erase(it);
}
}
else {
for (auto temp : mset2)
{
mset1.insert(temp);
auto it = mset1.find(temp);
if (it != mset1.begin())
{
it--;
cout << "Put " << '"' << temp.second << '"' << " after " << '"' << (*it).second << '"' << endl;
}
else
cout << "Put "<<'"'<<temp.second << '"'<<" first" << endl;
}
cout << "END" << endl;
mset2.clear();
} }
return 0;
}

【习题 5-8 UVA - 230】Borrowers的更多相关文章

  1. uva 230 Borrowers(摘)<vector>"结构体“ 膜拜!

    I mean your borrowers of books--those mutilators of collections, spoilers of the symmetry of shelves ...

  2. UVa 230 Borrowers(map和set)

    I mean your borrowers of books - those mutilators of collections, spoilers of the symmetry of shelve ...

  3. Uva - 230 - Borrowers

    AC代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cctype ...

  4. UVA 230 Borrowers (STL 行读入的处理 重载小于号)

    题意: 输入若干书籍和作者名字,然后先按作者名字升序排列,再按标题升序排列,然后会有3种指令,BORROW,RETURN, SHELVE. BORROW 和 RETURN 都会带有一个书名在后面,如: ...

  5. Borrowers UVA - 230

      I mean your borrowers of books - those mutilators of collections, spoilers of the symmetry of shel ...

  6. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  7. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  8. 动态规划 Dynamic Programming 学习笔记

    文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...

  9. UVa第五章STL应用 习题((解题报告))具体!

    例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...

随机推荐

  1. Excel的版本

    https://en.wikipedia.org/wiki/Microsoft_Excel 取自维基百科,需要特别注意的是,从v12开始,有很大的改变.后缀名从xls变为xlsx Versions 5 ...

  2. 2.Maven之(二)Maven生命周期

    转自:https://blog.csdn.net/u012152619/article/details/51473404 我们在开发项目的时候,不断地在编译.测试.打包.部署等过程,maven的生命周 ...

  3. 码农Coding Peasant(s):一般指从事没有发展前景的软件开发职位

    码农Coding Peasant(s):一般指从事没有发展前景的软件开发职位,这种职位只能强化职业者在单方面的技术领域技能,学不到新技术,同时也是部分从事软件开发工作人员的一个自嘲的称号.一个依靠写代 ...

  4. 搭建 GIT 服务器教程

  5. css相关用法

    1. 2. 3.offset([coordinates]) 获取匹配元素在当前视口的相对偏移. 返回的对象包含两个整型属性:top 和 left,以像素计.此方法只对可见元素有效. a.获取当前元素的 ...

  6. MyBatis学习总结(16)——Mybatis使用的几个建议

    1.Mapper层参数为Map,由Service层负责重载. Mapper由于机制的问题,不能重载,参数一般设置成Map,但这样会使参数变得模糊,如果想要使代码变得清晰,可以通过service层来实现 ...

  7. JavaScript学习总结(8)——JS实用技巧总结

    后退 前进 <!--<input type="button" value="后退" onClick="history.go(-1)&quo ...

  8. Swift视频教程,Swift千人学iOS开发编程语言

    此时大家站在同一起跑线.Swift语言将将是下一个风靡程序猿界的编程语言,是否能抢占先机,近在咫尺. 本期推荐Swift编程语言视频教程,内容包含:开发环境基本使用.数据类型和常量.数据自己主动检查和 ...

  9. x264代码剖析(八):encode()函数之x264_encoder_close()函数

    x264代码剖析(八):encode()函数之x264_encoder_close()函数 encode()函数是x264的主干函数.主要包含x264_encoder_open()函数.x264_en ...

  10. 将字符串使用md5加密

    >>> import md5 >>> md5.md5('123').hexdigest() '202cb962ac59075b964b07152d234b70' & ...