解説
求めたい答えは i=1,2,…,Nmaxj=1,2,…,Mmax∣Ai−Bj∣ です.
∣x∣=max(x,−x) より,答えは max(i=1,2,…,Nmaxj=1,2,…,Mmax(Ai−Bj),i=1,2,…,Nmaxj=1,2,…,Mmax(Bj−Ai)) と等しいです.
さらに,
- i=1,2,…,Nmaxj=1,2,…,Mmax(Ai−Bj)=i=1,2,…,NmaxAi−j=1,2,…,MminBj
- i=1,2,…,Nmaxj=1,2,…,Mmax(Bj−Ai)=j=1,2,…,MmaxBj−i=1,2,…,NminAi
であることから,結局 max(max(A)−min(B),max(B)−min(A)) を求めれば良いことが分かります.
A,B の最大値・最小値はそれぞれ O(N),O(M) で計算できるので,この問題は O(N+M) で解くことができます.