fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun readStr () = valOf (TextIO.inputLine TextIO.stdIn) fun readStrWithoutWS () = let val s = readStr () in String.implode (List.filter (fn c => Char.isAlphaNum c) (String.explode s)) end val () = let val n = readInt () val segments = List.tabulate (n, fn _ => (readInt (), readStrWithoutWS ())) val ans = List.foldl (fn ((timeLimit, s), (canTypeAcc, missAcc)) => let val numOfType = 12 * timeLimit div 1000 val canType = Int.min (String.size s, numOfType) val miss = String.size s - canType in (canType + canTypeAcc, miss + missAcc) end ) (0, 0) segments in print (Int.toString (#1 ans) ^ " " ^ Int.toString (#2 ans) ^ "\n") end