CF1040B.Shashlik Cooking

普及-

通过率:0%

时间限制:1.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Long story short, shashlik is Miroslav's favorite food. Shashlik is prepared on several skewers simultaneously. There are two states for each skewer: initial and turned over.

This time Miroslav laid out nn skewers parallel to each other, and enumerated them with consecutive integers from 11 to nn in order from left to right. For better cooking, he puts them quite close to each other, so when he turns skewer number ii, it leads to turning kk closest skewers from each side of the skewer ii, that is, skewers number i−ki - k, i−k+1i - k + 1, ..., i−1i - 1, i+1i + 1, ..., i+k−1i + k - 1, i+ki + k (if they exist).

For example, let n=6n = 6 and k=1k = 1. When Miroslav turns skewer number 33, then skewers with numbers 22, 33, and 44 will come up turned over. If after that he turns skewer number 11, then skewers number 11, 33, and 44 will be turned over, while skewer number 22 will be in the initial position (because it is turned again).

As we said before, the art of cooking requires perfect timing, so Miroslav wants to turn over all nn skewers with the minimal possible number of actions. For example, for the above example n=6n = 6 and k=1k = 1, two turnings are sufficient: he can turn over skewers number 22 and 55.

Help Miroslav turn over all nn skewers.

长话短说,沙希利克(shashlik)是米罗斯拉夫最喜爱的食物。沙希利克是同时在若干串签上烤制的。每根串签有两种状态:初始状态和翻转状态。

这一次,米罗斯拉夫将 nn 根串签彼此平行地排成一排,并从左到右依次用连续整数 11 到 nn 对其编号。为了使烤制效果更佳,他将串签摆放得非常靠近,因此当他翻转第 ii 根串签时,会导致其左右两侧各自最近的 kk 根串签也被翻转,即串签编号为 i−ki - k, i−k+1i - k + 1, ..., i−1i - 1, i+1i + 1, ..., i+k−1i + k - 1, i+ki + k 的那些串签(如果存在的话)。

例如,设 n=6n = 6 且 k=1k = 1。当米罗斯拉夫翻转第 33 根串签时,则编号为 22、33、44 的串签都会被翻转。若此后他再翻转第 11 根串签,则编号为 11、33、44 的串签将被翻转,而编号为 22 的串签将恢复至初始状态(因为它又被翻转了一次)。

如前所述,烹饪的艺术要求精准的时机控制,因此米罗斯拉夫希望以最少的操作次数翻转全部 nn 根串签。例如,在上述例子中(n=6n = 6 且 k=1k = 1),两次翻转操作即足够:他可以翻转第 22 根和第 55 根串签。

请帮助米罗斯拉夫翻转全部 nn 根串签。

输入格式

The first line contains two integers nn and kk (1≤n≤10001 \leq n \leq 1000, 0≤k≤10000 \leq k \leq 1000) — the number of skewers and the number of skewers from each side that are turned in one step.

第一行包含两个整数 nn 和 kk(1≤n≤10001 \leq n \leq 1000,0≤k≤10000 \leq k \leq 1000)—— 分别表示烤肉签的总数,以及每一步中从每一侧翻转的烤肉签数量。

输出格式

The first line should contain integer ll — the minimum number of actions needed by Miroslav to turn over all nn skewers. After than print ll integers from 11 to nn denoting the number of the skewer that is to be turned over at the corresponding step.

第一行应包含整数 ll —— 米罗斯拉夫将全部 nn 个烤肉签翻转所需的最少操作次数。随后输出 ll 个介于 11 到 nn 之间的整数,表示在对应步骤中需要翻转的烤肉签编号。

输入输出样例

  • 输入#1

    7 2

    输出#1

    2
    1 6
  • 输入#2

    5 1

    输出#2

    2
    1 4

说明/提示

In the first example the first operation turns over skewers 11, 22 and 33, the second operation turns over skewers 44, 55, 66 and 77.

In the second example it is also correct to turn over skewers 22 and 55, but turning skewers 22 and 44, or 11 and 55 are incorrect solutions because the skewer 33 is in the initial state after these operations.

在第一个例子中,第一次操作翻转烤肉签 11、22 和 33,第二次操作翻转烤肉签 44、55、66 和 77。

在第二个例子中,翻转烤肉签 22 和 55 也是正确的;但翻转烤肉签 22 和 44,或 11 和 55 是错误的解法,因为经过这些操作后,烤肉签 33 仍处于初始状态。

输入解题思路,AI测评打分。不知道怎么写?

首页