秘密
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
Description
dXqwq 是个急性子的女孩子。
她和一些朋友在一个社团里,这 n 个人都生活在数轴上互不相同的位置 ai。
一些时候,某个人会收到一条秘密消息,他想要尽快把这些消息线下告诉每个人。所有人的移动速度都是 1 单位长度每秒,两个人在相同位置的时候可以交换消息,交换消息不消耗时间。
为了让大家能够尽快地收到新消息,dXqwq 想要让你编写一个程序,来计算所有人都收到消息需要花费的最小时间。
接下来 q 天,每天会发生以下三种事件的一种:
-
+ x
:一个位置为 x 的人加入了社团,保证此时没有人的位置为 x。 -
- x
:一个位置为 x 的人退出了社团,保证此时有人的位置为 x。 -
? x
:一个位置为 x 的人收到了一条秘密消息,你需要求出所有人都收到消息的最小时间,保证此时有人的位置为 x。
我们认为每一天结束后,所有人都会回到自己的初始位置。
Input Format
从文件 secret.in
中读入数据。
第一行输入两个整数 n,q。
第二行输入 n 个整数 ai。
接下来 q 行,每行输入一个字符 o 和一个整数 x,代表事件类型和参数。
Output Format
输出到文件 secret.out
中。
对于每个 o=? 的询问输出一行一个浮点数,代表所有人都收到消息的最小时间,保留两位小数。
3 6
1 3 5
? 3
- 3
? 5
+ 2
+ 4
? 2
2.00
2.00
1.50
Hint
样例
Input 1
3 6 1 3 5 ? 3 - 3 ? 5 + 2 + 4 ? 2
Output 1
2.00 2.00 1.50
Input 2
见下发的 secret2.in。 该样例满足测试点 4 的性质。
Output 2
见下发的 secret2.ans。 该样例满足测试点 4 的性质。
Input 3
见下发的 secret3.in。 该样例满足测试点 7 的性质。
Output 3
见下发的 secret3.ans。 该样例满足测试点 7 的性质。
数据范围
本题共 10 个测试点,全部测试点满足 2≤n,q≤105,0≤ai,x≤109,ai 互不相同,o=? 时社团至少有两个人,保证存在 o=?。
测试点 | n≤ | q≤ | 特殊限制 |
---|---|---|---|
1 | 3 | 3 | o=? |
2 | 9 | 9 | o=? |
3 | 103 | 103 | o=? |
4 | 105 | 10 | o=? |
5∼6 | 105 | 105 | o=? |
7∼8 | 103 | 103 | |
9∼10 | 105 | 105 |
样例解释
对于第一次询问,社团里的人分别在 {1,3,5},只需要所有人都在 3 位置汇合即可。
对于第二次询问,社团里的人分别在 {1,5},仍然只需要所有人都在 3 位置汇合即可。
对于第三次询问,社团里的人分别在 {1,2,4,5},策略分为两步:
- 前两个人向后走 1 秒,后两个人向左走 1 秒,分别到 {2,3,3,4},中间两个人传递信息。
- 前两个人向对方走 0.5 秒,后两个人向对方走 0.5 秒,分别到 {2.5,2.5,3.5,3.5},此时所有人都收到信息,共花费 1.5 秒。
注意,本题不设 Special Judge,因为可以证明你的答案的小数点后第三位不是 4 或 5。