codeforces修正
二つ前の記事で、
解いたと思っていた問題。
今日通してみると、誤っていることが判明しました。
なので素直に書きなおしてみた。
main = do nab <- getLine let (n:a:b:_) = map read $ words nab print $ length $ filter ((==n-1).f) [(x,y) | x <- [a..n],y<-[0..b]] where f = \(x,y) -> x+y
このソースコードで通すと今度はちゃんとAccepted。
つまり、求める答えとしては、合計でn人の人間がいて、
左側にはa人以上、右側にはb人以下いるのだから、リスト内包表記で全ての組み合わせを列挙し、
(右側人数)+(左側人数)=n-1
となるタプル数を数えればいいのです。
問題によると、nは高々100ですから、この方法でも十分間に合います。