OP= "+-" def max(s) op = s.take_while {|c| OP.include?(c) } num = s.drop(op.size).reverse v = [] until op.empty? pm = op.pop n = num.pop v.unshift( (pm+n).to_i ) end v.unshift(num.join().to_i) v.inject(0,&:+) end def min(s) op = s.take_while {|c| OP.include?(c) }.reverse num = s.drop(op.size).reverse if op.first == '-' op.shift op.push('+') v = [] until op.empty? pm = op.pop n = num.pop v.unshift( (pm + n).to_i ) end v.unshift(num.join().to_i * -1) v.inject(0,&:+) else mins = Array.new(op.size + 1,"") num.each_with_index {|v, i| mins[i % mins.size] += v } mins.map(&:to_i).inject(0,&:+) end end n = gets.to_i s = gets.split.sort puts [max(s), min(s)].join(" ")