# 一発完動うれしいぃぃ def calc_max(s) nums = s.scan(/\d/).map(&:to_i).sort plus = s.count("+") minus = s.count("-") ret = 0 minus.times{ ret -= nums.shift } plus.times{ ret += nums.shift } ret += nums.reverse.join.to_i end def calc_min(s) nums = s.scan(/\d/).map(&:to_i).sort plus = s.count("+") minus = s.count("-") ret = 0 if minus > 0 then # "-"があれば、できるだけ大きいマイナスの数値を作る。 t = [] (nums.size - (plus + minus)).times do t << nums.pop end ret -= t.join.to_i minus -= 1 minus.times{ ret -= nums.pop } plus.times{ ret += nums.pop } ret += nums.pop else # "+"しかなければ、大きい数字を低い位に使う。 m = 1 count = 0 while nums.size > 0 do ret += nums.pop * m count += 1 m *= 10 if count % (plus + 1) == 0 end end return ret end gets s = gets max = calc_max(s) min = calc_min(s) puts "#{max} #{min}"