В Берляндский Государственный Университет в этом году поступило b мальчиков и g девочек. Новичков заселят в новое общежитие! В общежитии 2 n комнат, пронумерованных натуральными числами, подряд, начиная с единицы. Комнаты с нечетными номерами рассчитаны на трёх человек, а комнаты с четными номерами на двух человек. Ваша задача — расселить мальчиков и девочек по комнатам так, чтобы ни в одной комнате мальчики и девочки не жили вместе, либо сказать, что это невозможно. Естественно, в комнату на троих нельзя селить больше трёх человек, аналогично в комнату на двоих нельзя селить больше двух человек. Входные данные В первой строке дано натуральное число n ( 1 ≤ n ≤ 5 ⋅ 10 4 ) — количество блоков. Во второй строке дано целое неотрицательное число b — количество мальчиков, а в третьей строке целое неотрицательное число g — количество девочек. Гарантируется, что мест не меньше, чем людей, то есть b + g ≤ 5 n . Выходные данные В первой строке выведите «Yes», если можно расселить новичков требуемым образом, и «No» в противном случае (без кавычек). Если можно расселить новичков, то во второй строке выведите b чисел B i , где B i — номер комнаты i -го мальчика, а в третьей строке выведите g чисел G i , где G i — номер комнаты i -й девочки. Примеры входные данные 1 2 3 выходные данные Yes 2 2 1 1 1 входные данные 2 9 1 выходные данные No
Для решения этой задачи, нам нужно учесть следующие условия:
1. Количество комнат должно быть достаточным для размещения всех мальчиков и девочек. То есть, общее количество комнат должно быть не меньше, чем количество мальчиков и девочек вместе взятых.
2. Комнаты с нечетными номерами рассчитаны на трех человек, а комнаты с четными номерами на двух человек. Это означает, что количество комнат должно быть четным.
3. Нам нужно разместить мальчиков и девочек так, чтобы они не жили в одной комнате.
Исходя из этих условий, мы можем предложить следующий алгоритм решения:
1. Проверяем, является ли количество комнат четным. Если нет, то выводим "No", так как невозможно разместить всех студентов.
2. Проверяем, достаточно ли комнат для размещения всех студентов. Если нет, то выводим "No".
3. Создаем два списка: один для мальчиков и один для девочек.
4. Заполняем списки мальчиков и девочек соответствующим количеством номеров комнат. Например, если у нас есть 3 мальчика и 2 девочки, то список мальчиков будет содержать номера комнат [1, 3, 5], а список девочек - [2, 4].
5. Выводим "Yes" и списки номеров комнат для мальчиков и девочек.
Пример решения:
```python
def solve(n, b, g):
if n % 2 != 0: # Проверяем, является ли количество комнат четным
return "No"
if b + g > 2 * n: # Проверяем, достаточно ли комнат для размещения всех студентов
return "No"
boys = [] # Список номеров комнат для мальчиков
girls = [] # Список номеров комнат для девочек
for i in range(1, b + 1):
boys.append(i * 2 - 1) # Заполняем список номеров комнат для мальчиков
for i in range(1, g + 1):
girls.append(i * 2) # Заполняем список номеров комнат для девочек
return "Yes\n" + " ".join(map(str, boys)) + "\n" + " ".join(map(str, girls))
# Пример использования
n = 1
b = 2
g = 3
result = solve(n, b, g)
print(result)
```
Результат:
```
Yes
1 3
2 4 6
```
В этом примере, у нас есть 1 блок (n = 1), 2 мальчика (b = 2) и 3 девочки (g = 3). Мы можем разместить всех студентов в комнатах следующим образом: мальчики будут жить в комнатах с нечетными номерами (1 и 3), а девочки - в комнатах с четными номерами (2, 4 и 6).