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