#3876. 兔猫信奥学院·双龙求中-难

兔猫信奥学院·双龙求中-难

🐰🐱 兔猫信奥学院·双龙求中

在遥远的算法大陆,传说有两条智慧之龙:

  • 青龙的鳞片上铭刻了一段升序排列的数列,
  • 白龙的鳞片上也铭刻了一段升序排列的数列。

它们想要通过“合龙之术”寻找一条中位真理之路——两段数列合并后,中间的数值(若总长偶数,则取中间两者的平均)。

聪明的小兔和小猫被加菲老师请来助阵:请你在 O(log(m+n))O(\log(m+n)) 时间内,找出这条“中位真理”!


输入格式

m n
s1[0] s1[1] … s1[m-1]
s2[0] s2[1] … s2[n-1]
  • 第一行:两个整数 m,nm,n,表示两条龙的数列长度。
  • 第二行:mm 个整数,为青龙数列 s1升序
  • 第三行:nn 个整数,为白龙数列 s2升序

输出格式

ans

一个实数,精确到小数点后 5 位,表示合并后整体数列的中位数。


样例

样例 1

输入:
2 1
1 3
2

输出:
2.00000

合并 → [1,2,3],中位数 2。

样例 2

输入:
2 2
1 2
3 4

输出:
2.50000

合并 → [1,2,3,4],中位数 (2+3)/2 = 2.5。


数据范围

  • 0m,n10000 \le m,n \le 1000, 且 1m+n20001 \le m+n \le 2000
  • 每个数列已经升序排列
  • 106s1[i],s2[j]106-10^6 \le s1[i],s2[j] \le 10^6