問題概要
4 つの整数 $a, b, c, d$ が与えられる.$$\max_{ x \in [ a, b ], y \in [ c, d ] } xy$$ を求めよ.
制約
- $-10^9 \leq a \leq b \leq 10^9$
- $-10^9 \leq c \leq d \leq 10^9$
解法
$xy$ の絶対値に着目すると,$x, y$ の絶対値がそれぞれ大きい方がより大きな値をとります.あとは符号の問題(負と負は正とかそういう)が残りますが,それぞれの区間の端の値以外を使った場合,それを区間の端の値(絶対値が大きくなる的なイメージ)に置き換えるとよりよい解を得られます.なので,$x$ は $a$ または $b$ ,$y$ は $c$ または $d$ の計 4 通りを試せばよいです.
コード
main = do [ a, b, c, d ] <- readIntegers print $ maximum $ do x <- [ a, b ] y <- [ c, d ] return $ x * y