Home => ProblemSet => 2004:秘密
Problem2190--2004:秘密

2190: 2004:秘密

Time Limit: 1 Sec  Memory Limit: 512 MB  Submit: 0  Solved: 0
[ Submit ] [ Status ] [ Creator: ][ 参考程序 ]

Description

小V 是个急性子的女孩子。
她和一些朋友在一个社团里,这 n 个人都生活在数轴上互不相同的位置 ai。
一些时候,某个人会收到一条秘密消息,他想要尽快把这些消息线下告诉每个人。所有人的移动速度都是 1 单位长度每秒,两个人在相同位置的时候可以交换消息,交换消息不消耗时间。
为了让大家能够尽快地收到新消息,小V 想要让你编写一个程序,来计算所有人都收到消息需要花费的最小时间。
接下来 q 天,每天会发生以下三种事件的一种:
  • + x :一个位置为 x 的人加入了社团,保证此时没有人的位置为 x。
  • - x:一个位置为 x 的人退出了社团,保证此时有人的位置为 x。
  • ? x:一个位置为 x 的人收到了一条秘密消息,你需要求出所有人都收到消息的最小时间,保证此时有人的位置为 x。
我们认为每一天结束后,所有人都会回到自己的初始位置。

Input

第一行输入两个整数 n,q。
第二行输入 n 个整数 ai。
接下来 q 行,每行输入一个字符 o 和一个整数 x,代表事件类型和参数。

Output

对于每个 o=? 的询问输出一行一个浮点数,代表所有人都收到消息的最小时间,保留两位小数。

Sample Input Copy

3 6
1 3 5
? 3
- 3
? 5
+ 2
+ 4
? 2

Sample Output Copy

2.00
2.00
1.50

HINT

样例解释

对于第一次询问,社团里的人分别在 {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。



Source/Category