fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun intString n = if 0 <= n then Int.toString n else "-" ^ Int.toString (abs n) 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 val () = let val n = readInt () val k = readInt () val a_s = List.tabulate (n, fn _ => readInt ()) val sorted_a_s = List.rev (quicksort a_s) val taked_a_s = List.take (sorted_a_s, k) val filtered_a_s = List.filter (fn a => 0 < a) taked_a_s val sum = List.foldl (fn (a, acc) => a + acc) 0 filtered_a_s val ans = if List.length filtered_a_s = 0 then List.hd sorted_a_s else sum in print (intString ans ^ "\n") end