3339:List

总时间限制: 
4000ms

内存限制: 
65536kB
描述

写一个程序完成以下命令:
new id ——新建一个指定编号为id的序列(id<10000)
add id num——向编号为id的序列加入整数num
merge id1 id2——合并序列id1和id2中的数,并将id2清空
unique id——去掉序列id中重复的元素
out id ——从小到大输出编号为id的序列中的元素,以空格隔开

输入
第一行一个数n,表示有多少个命令( n<=200000)。以后n行每行一个命令。
输出
按题目要求输出。
样例输入
16
new 1
new 2
add 1 1
add 1 2
add 1 3
add 2 1
add 2 2
add 2 3
add 2 4
out 1
out 2
merge 1 2
out 1
out 2
unique 1
out 1
样例输出
1 2 3
1 2 3 4
1 1 2 2 3 3 4 1 2 3 4
 #include <cstdio>
#include <iostream>
#include <cstring>
#include <list>
#include <map>
using namespace std; map<int,list<int> > m; int n,x,y;
char op[];
int main(){
scanf("%d",&n);
while(n--){
scanf("%s",op);
if(strcmp(op,"new")==){
scanf("%d",&x);
m.insert(map<int,list<int> >::value_type(x,list<int>()));
}
if(strcmp(op,"add")==){
scanf("%d%d",&x,&y);
m[x].push_back(y);
}
if(strcmp(op,"merge")==){
scanf("%d%d",&x,&y);
m[x].merge(m[y]);
//m[y].clear();
}
if(strcmp(op,"unique")==){
scanf("%d",&x);
m[x].sort();
m[x].unique();
}
if(strcmp(op,"out")==){
scanf("%d",&x);
m[x].sort();
list<int>::iterator it;
for(it=m[x].begin();it!=m[x].end();it++){
printf("%d ",*it);
}
printf("\n");
}
}
}

竟然还有list这STL,长见识了真是~~唉~~

最新文章

  1. win 安装mysql
  2. javascript模拟jQuery封装委托事件,兼容IE
  3. 使用Axure制作App原型应该怎样设置尺寸?
  4. 【转】图解Sql2005创建分区表的全过程
  5. 微信公众号与HTML 5混合模式揭秘2——分享手机相册中照片
  6. 最常用的动态sql语句梳理——分享给使用Mybatis的小伙伴们!
  7. open Session In View模式
  8. 理解MVC路由配置(转)
  9. Java基础学习(六)&mdash;List
  10. SparkMLlib回归算法之决策树
  11. 人工智能二:TensorFlow环境搭建
  12. Java飞机大战源代码
  13. fullpage 全屏插件
  14. Python 的第一个小程序
  15. 搭建vue环境
  16. C语言实现split以某个字符分割一个字符串
  17. 洗礼灵魂,修炼python(10)--有趣的判断分支+从实例中掌握循环语句
  18. NetCore入门篇:(八)Net Core项目使用Controller之三
  19. 通过命令来查看NameNode的状态(是Active还是Standby)
  20. 解决使用SecureCRT出现的Generic clipboard failure错误【自己亲身经历】

热门文章

  1. 【学习笔记】深入理解js原型和闭包(12)——简介【作用域】
  2. sass 常用用法笔记
  3. springdata-jpa 八种查询方法
  4. Java堆分配参数总结
  5. mac下fiddler安装配置启动及iphone配置连接
  6. Python3简明教程(四)—— 流程控制之分支
  7. Linux目录结构及详细介绍
  8. com组件简单应用
  9. LinuxMint 编译 LittlevGL GUI
  10. python之字符串str操作方法