040:List

it2023-11-05  61

040: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行每行一个命令。

输出

按题目要求输出。

思路

利用了 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; } } }
最新回复(0)