Problem:
Score : 100 points

Problem Statement

There are two buttons, one of size A and one of size B.

When you press a button of size X, you get X coins and the size of that button decreases by 1.

You will press a button twice. Here, you can press the same button twice, or press both buttons once.

At most how many coins can you get?

Constraints

All values in input are integers.

3 \leq A, B \leq 20

Input

Input is given from Standard Input in the following format:

A B

Output

Print the maximum number of coins you can get.

Sample Input 1

5 3

Sample Output 1

9

You can get 5 + 4 = 9 coins by pressing the button of size 5 twice, and this is the maximum result.

Sample Input 2

3 4

Sample Output 2

7

Sample Input 3

6 6

Sample Output 3

12

Solution in Rust (1.15.1) (judge verdict: Accepted)

use std::str::FromStr;
use std::io::stdin;
use std::collections::binary_heap::BinaryHeap;
use std::cmp::max;

fn main() {
    let (x, y) = {
        let line = read_vec::<u64>();
        (line[0], line[1])
    };
    let mut queue = BinaryHeap::new();
    queue.push(x);
    queue.push(y);
    let mut result = 0 as u64;
    for _ in 0..2 {
        let v = queue.pop().unwrap();
        result += v;
        queue.push(max(0, result - 1));
    }
    println!("{}", result);
}

fn read_vec<T: FromStr>() -> Vec<T> {
    let mut line = String::new();
    stdin().read_line(&mut line).ok();
    line.trim().split_whitespace()
        .map(|i| i.parse().ok().unwrap()).collect()
}