fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun readLargeInt () = valOf (TextIO.scanStream (LargeInt.scan StringCvt.DEC) TextIO.stdIn) fun quicksort [] = [] | quicksort (h::tl) = let val (s, b) = List.foldl (fn (x, (small, big)) => if x <= h then (x::small, big) else (small, x::big)) ([], []) tl in (quicksort s) @ [h] @ (quicksort b) end fun findAns [] (_, true) = 1 | findAns [] (_, false) = 0 | findAns (h :: tl) (old, true) = if h = old then findAns tl (old, false) else 1 + findAns tl (h, true) | findAns (h :: tl) (old, false) = if h = old then findAns tl (old, false) else findAns tl (h, true) val () = let val n = readInt () val a_s = List.tabulate (n, fn _ => readLargeInt ()) val sorted = quicksort a_s val ans = findAns sorted (~1, false) in print (Int.toString ans ^ "\n") end