CF216C Hiring Staff

题目描述

新晋伯兰商人 Vitaly 打算开一家家用电器商店。现在,他只需雇佣员工。 商店每周营业七天,但并非全天开放。每天至少需要有 $k$ 人在店内工作。 伯兰有一项法律,规定了工作日与休息日的顺序。具体地,每位员工必须连续工作 $n$ 天,然后连续休息 $m$ 天,之后再连续工作 $n$ 天,再休息 $m$ 天,如此循环往复。Vitaly 不想违反法律。幸运的是,法律只在员工被雇佣当天起生效。也就是说,如果一位员工在第 $x$ 天被雇佣,他应该在第 $[x,x+1,...,x+n-1]$ 天、$[x+m+n,x+m+n+1,...,x+m+2n-1]$ 天等时间段工作。第 $x$ 天可以由 Vitaly 自行选择。 还有一点:店里的钥匙。伯兰的法律禁止复制钥匙,所以只能有一把钥匙。Vitaly 打算把钥匙交给员工们。每天,钥匙必须在当天工作的某位员工手中,否则无人能开门。当日工作的员工之间可以传递钥匙。第一位被雇佣员工会在其第一天上班时获得钥匙。 每雇佣一名员工都要支付工资。因此,Vitaly 希望在保证商店每一天(从第 $1$ 天到无穷)都能正常运转的前提下,雇佣尽可能少的员工。换句话说,对于每一天(从第 $1$ 天到无穷),商店里必须至少有 $k$ 位员工工作,并且钥匙必须在当天工作的某位员工手中。 请帮助 Vitaly 计算最少需要雇佣多少员工,以及这些员工应在哪些天被雇佣。

输入格式

第一行包含三个整数 $n$、$m$ 和 $k$,含义分别为:每位员工连续工作的天数、每位员工连续休息的天数,以及每天至少工作的人数。 $$ 1 \leq m \leq n \leq 1000,\ n \neq 1,\ 1 \leq k \leq 1000 $$

输出格式

第一行输出一个整数 $z$,表示最少需要雇佣的员工人数。 第二行输出 $z$ 个正整数,以空格分隔,第 $i$ 个整数 $a_{i}$($1\leq a_{i} \leq 10^4$)表示第 $i$ 个员工的雇佣时间(天数)。 如果有多组答案,输出任意一组均可。

说明/提示

由 ChatGPT 5 翻译