Haskell
I was late to the part on this one and forgot to post my solution :3
import Data.List
readInput = map readMove . lines
where
readMove (d : ds) =
let n = read ds :: Int
in case d of
'L' -> -n
'R' -> n
part1 = length . filter ((== 0) . (`mod` 100)) . scanl' (+) 50
part2 = fst . foldl' count (0, 50)
where
count (z, p) d =
let (q, r) = (p + d) `divMod` 100
a = if p == 0 && d < 0 then -1 else 0
b = if r == 0 && d < 0 then 1 else 0
in (z + abs q + a + b, r)
main = do
input <- readInput <$> readFile "input01"
print $ part1 input
print $ part2 input