Problem:
Score : 100 points

Problem Statement

We have two integers: A and B.

Print the largest number among A + B, A - B, and A \times B.

Constraints

All values in input are integers.

-100 \leq A,\ B \leq 100

Input

Input is given from Standard Input in the following format:

A B

Output

Print the largest number among A + B, A - B, and A \times B.

Sample Input 1

-13 3

Sample Output 1

-10

The largest number among A + B = -10, A - B = -16, and A \times B = -39 is -10.

Sample Input 2

1 -33

Sample Output 2

34

The largest number among A + B = -32, A - B = 34, and A \times B = -33 is 34.

Sample Input 3

13 3

Sample Output 3

39

The largest number among A + B = 16, A - B = 10, and A \times B = 39 is 39.

Solution in Ruby (2.3.3) (judge verdict: Runtime Error)


job_count,period = gets.split.map{|s|s.to_i}
jobs = (1..job_count)
.map{|n| gets.split.map{|s|s.to_i}}
.group_by{|e| e.first }
.each{|day,jobs| 
  jobs.map!{|e| e.last }
  jobs.sort!.reverse!
}

hash = Hash.new
jobs.keys.sort.each {|day| hash[day] = jobs[day] }
jobs = hash

require "pp"
PP.pp(jobs,STDERR)

pay = 0
1.upto(period) {|p|
  selected_jobs = Hash.new
  jobs.each {|days,pays|
    if days <= p 
      selected_jobs[days] = jobs[days] 
    else
      break
    end
  } # 該当する期間より短い仕事を抽出
  job = selected_jobs
  .map{|days,pays| [days,pays.first] } # 各支払期間の中で報酬が最大のものを選択
  .max{|job1,job2| job1.last <=> job2.last} # 報酬が最も多いものを選択

  if job
    pay += job.last
    jobs[job.first].delete_at(1)
    jobs.delete(job.first) if jobs[job.first] == []
  end
}

puts pay