Как-то Миша и Андрей играли в очень простую игру. Сначала каждый игрок выбирает целое число в пределах от 1 до n. Пусть Миша выбрал число m, а Андрей — число a.
Затем с помощью генератора случайных чисел выбирается случайное целое число c в пределах от 1 до n (любое целое число от1 до n может быть выбрано с одной и той же вероятностью), после чего побеждает тот игрок, чьё число оказалось ближе к c. Ребята договорились, что в случае, когда m и a находятся на одинаковом расстоянии от c, выигрывает Миша.
Андрей хочет победить любой ценой и просит вас помочь ему. Вам известно число, выбранное Мишей, и число n. Нужно определить, какое число a, должен выбрать Андрей, чтобы вероятность его победы была максимальной.
Более формально, нужно найти такое целое число a (1 ≤ a ≤ n), чтобы вероятность того, что |c — a | < | c — m |, была максимальна, где c — выбранное равновероятно случайное целое число от 1 до n (включительно).
В первой строке находятся два целых числа n и m (1 ≤ m ≤ n ≤ 109) — диапазон чисел в игре и выбранное Мишей число соответственно.
Выведите одно целое число — такое значение a, чтобы вероятность победы Андрея была максимальной. Если таких значений несколько, выведите минимальное из них.
Примеры тестов
1 |
3 1 |
1 |
2 |
1 |
4 3 |
1 |
2 |
Примечание
В первом тесте: Андрей победит если c равно 2 или 3. Вероятность победы Андрея равна 2 / 3. Если Андрей выберет число a, равное 3, то вероятность победы будет 1 / 3. При a, равном 1, вероятность победы — 0.
Во втором тесте: Андрей победит если c равно 1 или 2. Вероятность победы Андрея — 1 / 2. При остальных вариантах выбора aвероятность победы меньше.
Мое решение
И вновь моя ошибка была в том, что я опять забыл про исключительную ситуацию. В данной задаче если диапазон идет до 1, то единственный возможный ответ это единица.
Еще я нагородил сперва много проверок на все случаи жизни. Хотя и думал в нужном направлении. Андрею всегда нужно выбирать число, отличающееся на единицу от числа Миши, и оно либо больше, либо меньше, главное брать число в направлении середины диапазона.
Проверенное решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var data = readline().split(' '); var result = 0; var n = parseInt(data[0]);//диапазон от 1 до n var m = parseInt(data[1]);//Выбор Мишы //Всё просто, нужно быть на единицу ближе к середине диапазона. if (m > n / 2){ result = m - 1; } else { result = m + 1; } //это проверка исключения по условию диапазон может быть от 1 до 1. if (n==1) { result = 1; } write(result); |