🏆
ABC406 を Haskell で
1 完惨敗。
あと環境構築不足でコンテスト中にローカル環境の hls を使えなくなってしまったので、再度構築を見直さないといけない。
A
solve :: Int -> Int -> Int -> Int -> Bool
solve h1 m1 h2 m2 =
(h1 > h2) || (h1 == h2 && m1 > m2)
main :: IO ()
main = do
[a, b, c, d] <- ints
putStrLn $ if solve a b c d then "Yes" else "No"
B
コンテスト中 AC できなかった原因は
このくらいは Haskell かどうかに関係なくさらっと解きたい。
solve :: Int -> [Integer] -> Integer
solve k = foldl' calcMul 1
where
cantCalc :: Integer -> Integer -> Bool
cantCalc n m = n > (10 ^ k - 1) `div` m
calcMul :: Integer -> Integer -> Integer
calcMul n m = if cantCalc n m then 1 else n * m
main :: IO ()
main = do
[_, k] <- ints
as <- integers
print $ solve k as
Discussion