AT_codequeen2024_final_g Quintuple Scoop Ice Cream

题目描述

高桥同学和朋友们来到 AtCoder Land 的一家冰淇淋店。 这家冰淇淋店有 $N$ 种口味的冰淇淋,每种口味的冰淇淋库存都充足。 在这家店里,你可以购买 $5$ 层叠加的冰淇淋。你可以自由选择这 $5$ 层的口味(可以重复),但相邻两层不能是同一种口味。也就是说,在这家店中,可以购买到 $N\times(N-1)^4$ 种不同的 $5$ 层叠加冰淇淋。 高桥同学有这家店的优惠券,只要对于所有 $i=1,2,\ldots,N$,第 $i$ 种口味的冰淇淋总共被点的数量不超过 $C_i$ 个,就可以用优惠券购买。由于冰淇淋的定价非常昂贵,高桥同学不能超过优惠券购买上限来购买。 高桥同学希望能为尽可能多的朋友购买 $5$ 层叠加的冰淇淋。请你计算最多能买多少份 $5$ 层叠加的冰淇淋,并构造一种购买方案。 更严格地说: 请找出最大的非负整数 $K$,以及一个 $K\times5$ 的序列 $(A_{i,j})_{1\leq i\leq K,1\leq j\leq 5}$,满足以下所有条件: - $1\leq A_{i,j}\leq N$($1\leq i\leq K,1\leq j\leq 5$)。 - $A_{i,j}\neq A_{i,j+1}$($1\leq i\leq K,1\leq j\leq 4$)。 - 对于每个 $x=1,2,\dotsc,N$,使 $A_{i,j}=x$ 的 $(i,j)$ 对数不超过 $C_x$。 如果有多个满足条件的解,输出其中任意一个即可。

输入格式

输入从标准输入读入,格式如下: > $N$ $C_1$ $C_2$ $\ldots$ $C_N$

输出格式

请输出最多能购买的 $5$ 层叠加冰淇淋的份数 $K$,以及每一份的口味选择。具体而言,输出 $K+1$ 行: > $K$ > $A_{1,1}$ $A_{1,2}$ $A_{1,3}$ $A_{1,4}$ $A_{1,5}$ > $A_{2,1}$ $A_{2,2}$ $A_{2,3}$ $A_{2,4}$ $A_{2,5}$ > $\vdots$ > $A_{K,1}$ $A_{K,2}$ $A_{K,3}$ $A_{K,4}$ $A_{K,5}$ 其中 $(A_{i,j})$ 必须满足上述所有条件。 如果有多种方案,输出任意一种即可。

说明/提示

### 样例解释 1 通过如下方法,可以最多购买 $3$ 份 $5$ 层叠加冰淇淋。 例如,以下输出也是正确答案: ``` 3 1 3 4 5 1 3 4 5 1 3 5 3 5 2 5 ``` 相反,下面的输出不被认为是正确答案: ``` 3 1 1 1 2 3 3 3 3 4 4 5 5 5 5 5 ``` ``` 3 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 ``` ``` 2 1 2 3 4 5 1 3 4 5 1 ``` 这些方案,要么有冰淇淋的相邻两层使用了相同口味,要么超过了第 $2$ 种和第 $4$ 种口味的购买上限,要么 $K$ 不是最大。 ### 样例解释 2 高桥同学虽然有 $1003$ 个口味的优惠券,但 $5$ 层叠加冰淇淋只能买一份。 ### 样例解释 3 也有可能无法买到一份 $5$ 层叠加冰淇淋。 # 数据范围 - $1\leq N\leq2\times10^5$ - $0\leq C_i\leq2\times10^5$ - $\displaystyle\sum_{i=1}^N C_i\leq2\times10^5$ - 所有输入均为整数。 由 ChatGPT 5 翻译