問題概要
クイズをしていて,正答で $+1$ 点,誤答は $-1$ 点が加算される.$0$ 点のときに誤答しても点数は負にはならない.
今 $X$ 点もっていて,この状態から続く $N$ 問の正誤判定が与えられる.最終的な得点を求めよ.
制約
- $1 \leq N \leq 10^5$
- $0 \leq X \leq 10^5$
解法
愚直にシミュレーションすることで,問題を解くことができます.$0$ 点か否かに関わらず $+1$/$-1$ してから,$\max( 0, * )$ で更新してあげると見かけの場合分けが無くなってすっきりします.
コード
main = do [ _, x ] <- readInts s <- getLine print $ solve x s solve x [] = x solve x (c:s) = solve nx s where nx = max 0 $ ( if c == 'o' then succ else pred ) x