• 我是管理员


    题目描述

    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中没有保留的题目,则输出两个空行。

    样例输入

    2
    Add acm
    Add club
    End
    Add I
    Add am
    Add very
    Delete very
    Add happy
    End

    样例输出

    1000 1001
    acm club
    1000 1001 1003
    I am happy

    没过的代码  答案错误

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <map>
     4 #include <string>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 
    10 int main()
    11 {
    12     int t;
    13     map<string,int> mp;
    14     cin>>t;
    15     while(t--)
    16     {
    17         string op,str;
    18         cin>>op;
    19         int num=1000;
    20         while(op!="End")
    21         {
    22             if(op=="Add")
    23             {
    24                 cin>>str;
    25                 mp[str]=num++;
    26             }
    27             else if(op=="Delete")
    28             {
    29                 cin>>str;
    30                 mp.erase(str);
    31             }
    32             cin>>op;
    33         }
    34         if(!mp.size()) cout<<"
    
    ";
    35         else
    36         {
    37             map<string,int>::iterator it;
    38             for(it=mp.begin();it!=mp.end();it++)
    39             {
    40                 if(it==mp.begin()) cout<<it->second;
    41                 else cout<<' '<<it->second; 
    42             }
    43             cout<<endl;
    44             for(it=mp.begin();it!=mp.end();it++)
    45             {
    46                 if(it==mp.begin()) cout<<it->first;
    47                 else cout<<' '<<it->first; 
    48             }
    49             cout<<endl;
    50         }
    51         
    52         mp.clear();
    53     }
    54     return 0;
    55 }

    睡一觉突然觉悟了

    map 如果用string当key值,会自动排序...........

    所以应用序号当key值

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <map>
     4 #include <string>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 
    10 int main()
    11 {
    12     int t;
    13     map<int,string> mp;
    14     map<int,string>::iterator it;
    15     cin>>t;
    16     while(t--)
    17     {
    18         string op,str;
    19         cin>>op;
    20         int num=1000;
    21         while(op!="End")
    22         {
    23             if(op=="Add")
    24             {
    25                 cin>>str;
    26                 mp[num++]=str;
    27             }
    28             else if(op=="Delete")
    29             {
    30                 cin>>str;
    31                 for(it=mp.begin();it!=mp.end();it++)
    32                 {
    33                     if(str==it->second) break;
    34                 }
    35                 mp.erase(it);
    36             }
    37             cin>>op;
    38         }
    39         if(!mp.size()) cout<<"
    
    ";
    40         else
    41         {
    42             for(it=mp.begin();it!=mp.end();it++)
    43             {
    44                 if(it==mp.begin()) cout<<it->first;
    45                 else cout<<' '<<it->first; 
    46             }
    47             cout<<endl;
    48             for(it=mp.begin();it!=mp.end();it++)
    49             
    50             {
    51                 if(it==mp.begin()) cout<<it->second;
    52                 else cout<<' '<<it->second; 
    53             }
    54             cout<<endl;
    55         }
    56         
    57         mp.clear();
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    设计模式——观察者模式
    安卓xml动画
    部署在weblogic上的springboot项目上传文件(servlet方式)
    Spring Boot 部署到weblogic 12c
    SpingBoot+Druid监控页面打不开(404)
    DAY49-前端入门-浮动布局案例、z-index、flex布局、响应式布局、过渡与动画
    DAY48-前端入门-文档流、浮动布局、清浮动、流式布局、定位布局
    DAY46-前端入门-组合选择器、标签a_img_list、盒模型、伪类、盒模型布局
    DAY45-前端入门-css的三种引用方式以及优先级、样式与长度颜色、常用样式、css选择器
    DAY44-前端入门-前端三剑客、第一个页面、常用标签、标签分类
  • 原文地址:https://www.cnblogs.com/jiamian/p/10640203.html
Copyright © 2020-2023  润新知