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 翻译