描述

写一个程序完成以下命令:
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

Approach #1:

#include<iostream>
#include<iterator>
#include<list>
#include<vector>
using namespace std;
list<int>& FindList(vector<list<int>>& l, int id) {
int tmp = l.size();
if (tmp > 0) {
vector<list<int>>::iterator i;
i = l.begin();
return *(i+id-1);
}
}; int main() {
int n;
cin >> n;
vector<list<int>> a;
for (int i = 0; i < n; ++i) {
string s;
cin >> s;
if (s == "new") {
int id;
cin >> id;
a.push_back(list<int>());
} else if (s == "add") {
int id, num;
cin >> id >> num;
list<int>& temp = FindList(a, id);
temp.push_back(num);
temp.sort();
} else if (s == "merge") {
int id1, id2;
cin >> id1 >> id2;
list<int>& temp1 = FindList(a, id1);
list<int>& temp2 = FindList(a, id2);
temp1.merge(temp2);
} else if (s == "unique") {
int id;
cin >> id;
list<int>& temp = FindList(a, id);
temp.unique();
} else if (s == "out") {
int id;
cin >> id;
list<int>& temp = FindList(a, id);
temp.sort();
if (temp.size() > 0) {
list<int>::iterator it;
for (it = temp.begin(); it != temp.end(); ++it) {
cout << *it << " ";
}
}
cout << endl;
}
}
return 0;
}

  

Analysis:

自己刚开始想的使用map来做这道题,样例通过了,但是提交的时候还是WA。参考了一下别人的代码交了上去。

随机推荐

  1. .NET高级工程师逻辑面试题

    1.面试题 有5座连续相邻的房子,并且每个房子有同的颜色:蓝色,绿色,红色,白色和黄色 每间房子的主人有不同的国籍:英国.印尼.德国.美国和荷兰 每个人喝不同的饮料:葡萄汁.咖啡.牛奶.茶和水 每个人 ...

  2. C# 对象封装为json格式

    1 对象 public class Person { public string Name { get; set; } public int Age { get; set; } public Date ...

  3. (转)libvirt 部分API 介绍

    感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如果转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  4. 【转】H5+css布局+js+前端和移动端ui+其他汇总

    无意间发现一个博客比较好,由于内容比较多,就把链接转过来,先保存着方便看的时候看. 感谢博主“张果” +++++++++++++++++++++++++++++++++++++++++++++++++ ...

  5. 【LA4043 训练指南】蚂蚁 【二分图最佳完美匹配,费用流】

    题意 给出n个白点和n个黑点的坐标,要求用n条不相交的线段把他们连接起来,其中每条线段恰好连接一个白点和一个黑点,每个点恰好连接一条线段. 分析 结点分黑白,很容易想到二分图.其中每个白点对应一个X结 ...

  6. 【HDU5361】In Touch

    题意有n个人住在一条直线上,从左到右编号为1,2,3....n                                                                     ...

  7. php魔术方法__SET __GET

    __SET  设置一个不可访问的属性的时候 调用_set方法 __GET 获取一个不可访问的属性的时候  调用_get 方法 <?php class stu{ private $a; priva ...

  8. Python中装饰器(转)

    本文由 伯乐在线 - 7even 翻译,艾凌风 校稿.未经许可,禁止转载!英文出处:Simeon Franklin.欢迎加入翻译组. 好吧,我标题党了.作为 Python 教师,我发现理解装饰器是学生 ...

  9. 十大基于Docker的开发工具

    http://www.infoq.com/cn/news/2014/08/top-10-open-source-docker FlynnFlynn是一个使用Go语言编写的开源PaaS平台,Flynn使 ...

  10. mybaties association 只返回一个结果问题处理

    mybatis xml文件为: <resultMap id="BaseResultMap" type="com.test.SubscribeOrder"& ...