你有 $X$ 张黑色卡牌、$Y$ 张白色卡牌和 $Z$ 张青色卡牌(共 $X + Y + Z$ 张)。你将按照自己选择的任意顺序,将所有卡牌一张接一张地放入一个单叠牌堆中。
在放入每张卡牌后,检查牌堆:
- 如果牌堆(此时)包含三种颜色中每种颜色的卡牌至少各一张,你将获得 $1$ 分,然后除你刚刚放入的那张卡牌外,牌堆中的所有其他卡牌都将被销毁(从牌堆中移除)。你刚刚放入的那张卡牌将作为牌堆中唯一的卡牌保留下来。
- 否则,什么也不会发生。
你的任务是计算你能获得的最大得分。
实现细节
你需要实现一个名为 maximum_score 的函数:
int64 maximum_score(int32 X, int32 Y, int32 Z);
- $X$:黑色卡牌的数量;
- $Y$:白色卡牌的数量;
- $Z$:青色卡牌的数量;
- 在程序开始时,对于每个测试用例,此函数被调用的次数不会超过 $100$ 次。
该函数应返回你能获得的最大得分。
数据范围
- $1 \le X \le 10^9$
- $1 \le Y \le 10^9$
- $1 \le Z \le 10^9$
子任务
- 子任务 1(4 分):$X = Y = Z = 1$
- 子任务 2(7 分):$X + Y + Z \le 8$
- 子任务 3(15 分):$X + Y + Z \le 16$
- 子任务 4(25 分):$X, Y, Z \le 50$
- 子任务 5(12 分):$X = Y = Z$
- 子任务 6(24 分):$X < Y = Z$
- 子任务 7(13 分):无附加限制
样例
样例输入 1
maximum_score(2, 2, 1);
样例输出 1
2
样例输入 2
maximum_score(4, 3, 4);
样例输出 2
5
样例评测程序
样例评测程序将按照以下格式读取输入:
- 第 1 行:一个整数 $T$,表示调用
maximum_score的次数。 - 接下来的 $T$ 行:每行三个整数 $X$、$Y$ 和 $Z$。
样例评测程序将调用 maximum_score(X, Y, Z) 并打印返回值。