我是管理员 oj152

来源:互联网 发布:美工素材网站有哪些 编辑:程序博客网 时间:2024/05/24 01:47

我是管理员

发布时间: 2017年7月27日 19:08   最后更新: 2017年7月27日 19:08   时间限制: 1000ms   内存限制: 128M

ACM俱乐部可以为每一个学校提供一个属于自己的OJ(Online Judge,在线判题系统),假如你现在已经成为了自己学校的OJ管理员,你自然就拥有了两项基本权限:添加题目到OJ、删除OJ上已添加的题目。从此以后,要添要删你做主!

题目的添加规则如下:
题目序号从1000开始,每个题目的序号具有惟一性,且以1为单位逐渐增大。
如果某道题目被删除,则此题目序号作废,后面新添加的题目不会再次占用此序号。

现在给你若干添加删除操作,请你按照题目序号从小到大输出OJ中最终保留的题目信息。

输入的第一行为一个正整数T(0<T<=10),表示有T组输入。 每组输入包含若干行,每行输入有三种情况: 
(1)当如入“Add”,表示添加题目,然后空一格输入要添加的题目名称,题目名称的长度小于10。 
(2)当输入“Delete”,表示删除题目,然后空一格输入要删除的题目名称。 
(3)当输入“End”,表示本组输入结束,此行不作处理。 
测试数据保证每组的第一行输入一定是Add操作,同时,删除的一定是当前OJ中存在的题目,题目名称只包含英文字母,且题目名称没有重名。

对于每组输入,输出两行,第一行为最终OJ中保留的题目序号,从小到大排列,题目序号之间空一格。 第二行为上一行对应题目序号的题目名称,题目名称之间空一格。 
如果最终OJ中没有保留的题目,则输出两个空行。

 复制
2Add acmAdd clubEndAdd IAdd amAdd veryDelete veryAdd happyEnd
1000 1001acm club1000 1001 1003I am happy
#include <iostream>#include <string>#include <cstring>#include <map>using namespace std;int main(){int t;cin >> t;while (t--){map<int,string> Map;map<int,string>::iterator pMap;string str,name;int tmp = 1000;while (1){cin >> str;if (strcmp(str.c_str(), "End") == 0)break;cin >> name;if (strcmp(str.c_str(), "Add") == 0){Map.insert(make_pair(tmp++, name));}else{pMap = Map.begin();while (pMap != Map.end()){if (pMap->second == name){Map.erase(pMap);break;}pMap++;}}}if (!Map.size())cout << "\n\n";else{pMap = Map.begin();for (int i = 0; i <Map.size(); i++){if (i != Map.size() - 1)cout << pMap++->first << " ";elsecout << pMap++->first;}cout << endl;pMap = Map.begin();for (int i = 0; i <Map.size(); i++){if (i != Map.size() - 1)cout << pMap++->second << " ";elsecout << pMap++->second;}cout << endl;}        if(Map.size())Map.erase(Map.begin(), Map.end());}return 0;}