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 C (GCC 5.4.1) (judge verdict: Runtime Error)

#include <stdio.h>
#include <string.h>

int count[100000][2];

int hanten(int i, int k, int *cnt, const int n) {

	while (i < n && k > 0) {
		if (count[i][0] != 0) {
			*cnt += count[i][0];
			k--;
		}
		else {
			*cnt += count[i][1];
		}
		i++;
	}

	if (i < n) *cnt += count[i][1];

	if (i == n) return 0;

	return 1;
}

int main() {
	int N, K, i, j, a, max = 0, cnt, flg;
	char S[100001];

	memset(count, 0, sizeof(count));

	scanf("%d %d", &N, &K);
	scanf("%s", S);

	i = 0;
	j = 0;
	while (i < N) {
		a = S[i] - '0';
		do {
			count[j][a]++;
			i++;
		} while (i < N && a == S[i] - '0');
		j++;
	}

	flg = 1;
	for (i = 0; flg; i++) {
		cnt = 0;
		flg = hanten(i, K, &cnt, N);
		if (cnt > max) max = cnt;
	}

	printf("%d", max);

	return 0;
}