首页 > 代码库 > Open Judge 3339 List
Open Judge 3339 List
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行每行一个命令。
- 输出
- 按题目要求输出。
- 样例输入
16new 1new 2add 1 1add 1 2add 1 3add 2 1add 2 2add 2 3add 2 4out 1out 2merge 1 2out 1out 2unique 1out 1
- 样例输出
1 2 3 1 2 3 41 1 2 2 3 3 41 2 3 4
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <list> 5 #include <map> 6 using namespace std; 7 8 map<int,list<int> > m; 9 10 int n,x,y;11 char op[10000];12 int main(){13 scanf("%d",&n);14 while(n--){15 scanf("%s",op);16 if(strcmp(op,"new")==0){17 scanf("%d",&x);18 m.insert(map<int,list<int> >::value_type(x,list<int>()));19 }20 if(strcmp(op,"add")==0){21 scanf("%d%d",&x,&y);22 m[x].push_back(y);23 }24 if(strcmp(op,"merge")==0){25 scanf("%d%d",&x,&y);26 m[x].merge(m[y]);27 //m[y].clear();28 }29 if(strcmp(op,"unique")==0){30 scanf("%d",&x);31 m[x].sort();32 m[x].unique();33 }34 if(strcmp(op,"out")==0){35 scanf("%d",&x);36 m[x].sort();37 list<int>::iterator it;38 for(it=m[x].begin();it!=m[x].end();it++){39 printf("%d ",*it);40 }41 printf("\n");42 }43 }44 }
既然还有list这STL,长见识了真是~~唉~~
Open Judge 3339 List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。