CF398A Cards

题目描述

用户 ainta 喜欢用卡牌玩游戏。他有 $a$ 张上面写有字母 “o” 的卡牌,和 $b$ 张上面写有字母 “x” 的卡牌。他把这些卡牌排成一排,并按照如下规则来计算整副卡牌的得分。 1. 最开始得分为 $0$。 2. 每一段连续的 “o” 的长度为 $x$,则得分增加 $x^{2}$。 3. 每一段连续的 “x” 的长度为 $y$,则得分减少 $y^{2}$。 例如,如果 $a=6,b=3$,ainsta 将卡牌排列为 “ooxoooxxo”,那么整副卡牌的得分为 $2^{2}-1^{2}+3^{2}-2^{2}+1^{2}=9$。这是因为共存在 5 段分别为:“oo”、“x”、“ooo”、“xx”、“o”。 用户 ainta 喜欢大数,所以他希望通过合理排列手中的卡牌,使得得分尽量大。请帮助 ainta 得到能获得的最大得分。需要注意,他必须用掉所有的卡牌。

输入格式

第一行包含两个用空格分开的整数 $a$ 和 $b$($0\le a,b\le 10^{5}$;$a+b\ge 1$),分别表示“o”牌和“x”牌的数量。

输出格式

第一行输出一个整数 $v$,表示 ainta 能获得的最大得分。 第二行输出 $a+b$ 个字符,描述最终排列的卡牌顺序。如果第 $k$ 张卡牌是 “o”,第 $k$ 个字符就为 “o”;如果第 $k$ 张卡牌是 “x”,第 $k$ 个字符就为 “x”。输出的 “o” 和 “x” 数量分别等于 $a$ 和 $b$。如果存在多种最大化得分的排列方法,输出任意一种即可。 请不要使用 %lld 格式符读取或输出 64 位整数,建议使用 cin、cout 流或 %I64d 格式符。

说明/提示

由 ChatGPT 5 翻译