码迷,mamicode.com
首页 > 其他好文 > 详细

Open Judge 3339 List

时间:2016-12-10 23:00:51      阅读:423      评论:0      收藏:0      [点我收藏+]

标签:0ms   har   map   names   clear   insert   多少   log   begin   

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
 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

标签:0ms   har   map   names   clear   insert   多少   log   begin   

原文地址:http://www.cnblogs.com/suishiguang/p/6158299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!