5671: 在线会议

内存限制:256 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:2 通过:2

题目描述

几乎每个 F 公司项目都有一个完整的开发团队在进行。他们通常分布在不同城市甚至国家的办公室中的不同房间。为了保持联系和跟踪项目进展,F 公司在 Spyke 聊天中召开共享的在线会议。
一天,F 公司的董事获取了一部分成功团队在线会议的记录。董事观看了记录后想与团队领导交谈。但他怎么确定谁是领导呢?董事逻辑上认为,领导是任何聊天会议中始终出现的人。换句话说,如果在某个时间点至少有一个人出现在会议中,那么领导一定在会议中。
你是助理董事。给定会议的“用户登录”/“用户注销”消息的时间顺序,帮助董事确定谁可能是领导。请注意,董事仅拥有会议的连续部分记录(可能不是整个会议)。

输入格式

第一行包含两个整数 n 和 m(1 ≤ n, m ≤ 10^5)——表示团队成员的数量和消息的数量。接下来的 m 行中,每行包含一个消息,格式为:
‘+ id’:该记录表示编号为 id 的人(1 ≤ id ≤ n)已登录会议。
‘- id’:该记录表示编号为 id 的人(1 ≤ id ≤ n)已退出会议。
假设团队中的所有人员编号从 1 到 n,消息按时间顺序给出。保证给定的序列是会议连续部分的正确记录。保证没有两个登录/注销事件同时发生。

输出格式

在第一行中打印整数 k(0 ≤ k ≤ n)——表示可能成为领导的人员数量。接下来的一行,打印 k 个整数,按升序排列——这些是可能成为领导的人员编号。
如果数据表明没有任何团队成员可以成为领导,打印单一数字 0。

输入样例 复制

5 4
+ 1
+ 2
- 2
- 1

输出样例 复制

4
1 3 4 5