总时间限制:
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行每行一个命令。
输出
按题目要求输出。
利用了 S T L STL STL中 l i s t list list
二维的 l i s t list list,可以随时增加删除且能够合并两个 l i s t list list, l i s t [ ] . m e r g e ( ) list[].merge() list[].merge(), l i s t . s o r t ( ) list.sort() list.sort(), l i s t . u n i q u e ( ) list.unique() list.unique()
#include<iostream> #include<algorithm> #include<list> using namespace std; list<int>lis[10010]; int main() { int n; cin >> n; while (n--) { string str; int x1,x2; list<int>::iterator it; cin >> str; switch (str[0]) { case 'n': cin >> x1; break; case 'a': cin >> x1 >> x2; lis[x1].push_back(x2); break; case 'm': cin >> x1 >> x2; lis[x1].merge(lis[x2]); break; case 'u': cin >> x1; lis[x1].sort(); lis[x1].unique(); break; case 'o': cin >> x1; lis[x1].sort(); for (it = lis[x1].begin(); it != lis[x1].end(); ++it) { cout << *it << " "; } cout << endl; break; } } }