Codeforces Round 233 (Div. 1) |
---|
Закончено |
Пользователь ainta любит играть с карточками. У него есть a карточек с буквой «o» и b карточек с буквой «x». Играя, ainta выкладывает все карточки в ряд и затем считает, сколько очков он получит по следующей формуле:
Например, если a = 6, b = 3, а ainta расположил карточки в порядке, описанном строкой «ooxoooxxo», то счет равняется 22 - 12 + 32 - 22 + 12 = 9. Это потому что в ряду из карточек всего 5 блоков: «oo», «x», «ooo», «xx», «o».
Пользователь ainta любит большие числа, поэтому он хочет максимизировать счет, расположив карточки некоторым образом. Помогите ainta добиться максимально возможного счета. Обратите внимание, что он обязан выложить в ряд все свои карточки.
В первой строке через пробел записаны два целых числа a и b (0 ≤ a, b ≤ 105; a + b ≥ 1) — количество карточек с «o» и количество карточек с «x».
В первой строке выведите единственное целое число v — наибольший счет, которого может добиться ainta.
Во второй строке выведите a + b символов, описывающих оптимальный ряд карточек. Если k-ая карта в ряду содержит символ «o», то k-ый символ должен равняться «o». Если k-тая карта в ряду содержит «x», то k-ый символ должен равняться «x». Количество символов «o» должно равняться a, а количество символов «x» должно равняться b. Если есть несколько способов максимизировать v, выведите любой из них.
Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-битных целых чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.
2 3
-1
xoxox
4 0
16
oooo
0 4
-16
xxxx
Название |
---|