, на с++ нужно решение Возрождая древние традиции английских рыцарей, в одном городе члены школьного клуба любителей информатики каждую неделю собираются за круглым столом и обсуждают результаты последних соревнований.
Руководитель клуба Иван Петрович недавно заметил, что не все ребята активно участвуют в обсуждении. Понаблюдав за несколькими заседаниями клуба, он заметил, что активность члена клуба зависит от того, кто с кем сидит рядом.
В клуб приходят на занятия
m
мальчиков и
n
девочек. Иван Петрович заметил, что мальчик активно участвует в обсуждении только тогда, когда непосредственно рядом с ним с обеих сторон от него сидят девочки, а девочка активно участвует в обсуждении только тогда, когда непосредственно рядом с ней с одной стороны от нее сидит мальчик, а с другой — девочка.
Желая сделать заседание клуба как можно более интересным, Иван Петрович решил разместить участников за круглым столом таким образом, чтобы как можно больше членов клуба приняло активное участие в обсуждении.
Требуется написать программу, которая по заданным числам
m
и
n
выведет такой размещения
m
мальчиков и
n
девочек за круглым столом, при котором максимальное количество членов клуба будет активно участвовать в обсуждении.
Формат входных данных
Входной файл содержит два целых числа m и n, разделенных ровно одним пробелом
(
0
≤
m
≤
1000
,
0
≤
n
≤
1000
,
m
+
n
≥
3
)
.
Формат результата
Выходной файл должен содержать строку с расположенными в некотором порядке
m
символами «B» (заглавная латинская буква) и
n
символами «G» (заглавная латинская буква). Символ «B» означает мальчика, а символ «G» — девочку.
Символы следует расположить в том порядке, в котором нужно разместить членов клуба вокруг стола. Соседние символы соответствуют членам клуба, которые сидят рядом. Рядом сидят также члены клуба, соответствующие первому и последнему символу выведенной строки.
1. Рассмотрим все возможные варианты размещения участников клуба за круглым столом.
2. Проверим каждый вариант размещения на соответствие условиям: мальчик активно участвует в обсуждении только тогда, когда непосредственно рядом с ним с обеих сторон от него сидят девочки, а девочка активно участвует в обсуждении только тогда, когда непосредственно рядом с ней с одной стороны от нее сидит мальчик, а с другой — девочка.
3. Сохраняем вариант размещения, при котором максимальное количество членов клуба будет активно участвовать в обсуждении.
4. Выводим результат согласно формату результата.
Теперь пошагово разберемся, как решить задачу на языке программирования C++.
```cpp
#include
#include
using namespace std;
string arrangeClubMembers(int m, int n) {
string arrangement;
if (m == n) {
// Если число мальчиков и девочек одинаково,
// то каждый мальчик будет сидеть рядом с девочкой
arrangement += "B";
for (int i = 0; i < n; i++) {
arrangement += "GB";
}
} else if (m > n) {
// Если число мальчиков больше числа девочек,
// то сначала сидят мальчики, затем девочки
while (m > 0 && n > 0) {
arrangement += "BG";
m--;
n--;
}
while (m > 0) {
arrangement += "B";
m--;
}
while (n > 0) {
arrangement += "G";
n--;
}
} else {
// Если число девочек больше числа мальчиков,
// то сначала сидят девочки, затем мальчики
while (n > 0 && m > 0) {
arrangement += "GB";
m--;
n--;
}
while (n > 0) {
arrangement += "G";
n--;
}
while (m > 0) {
arrangement += "B";
m--;
}
}
return arrangement;
}
int main() {
int m, n;
cin >> m >> n;
cout << arrangeClubMembers(m, n) << endl;
return 0;
}
```
Программа начинается с объявления необходимых заголовочных файлов и пространства имен.
Затем, в функции `arrangeClubMembers` происходит основная логика решения задачи:
1. Создается пустая строка `arrangement`, в которую будет сохранено итоговое размещение участников клуба.
2. Проверяются условия и выполняются действия в соответствии с ними, чтобы сформировать размещение вокруг стола.
3. Результат сохраняется в переменную `arrangement`.
4. Функция возвращает итоговое размещение.
В функции `main` происходит основной ввод данных и вызов функции `arrangeClubMembers` для получения результата. Результат выводится на экран.
Полный код программы решения задачи на C++ предоставлен выше.