040:List

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;
		}
	}
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值