小月的前缀(构造version)
题号:NC310928
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个长度为 n 的整数数组 A = \{a_1,a_2,\dots,a_n\},记其偏移量为 r 的向左循环移位后得到的数组为 A_r = \{a_{r,1},a_{r,2},\dots,a_{r,n}\}。该次旋转的得分定义为数组 A_r 中,前缀和严格大于 0 的前缀数量:

\displaystyle {\rm score}(A_r) = \left\lvert\left\{\, i ~\Big|~ 1\leqq i\leqq n,\ \sum\limits_{j=1}^{i} a_{r,j}>0\right\}\right\rvert

\hspace{15pt}现在,对于给定的数组长度 n 与偏移量 r,你需要构造一个长度为 n 的整数数组 A,使得 A_r 的得分是偏移量取 0,1,\dots,{n-1}严格最大的({\rm score}(A_r) > {\rm score}(A_s)s \neq r),且数组中元素的取值范围为 [-10^9,10^9]。若存在多个满足要求的数组,输出任意一个即可。

【名词解释】
\hspace{15pt}偏移量为 r 的向左循环移位:即将数组前 r 个元素按原顺序移动到数组末尾,剩余元素整体向前移动。例如,记原数组 \{a_1,a_2,\dots,a_n\},当偏移量为 1 时,得到 \{a_2,a_3,\dots,a_n,{\color{orange}{a_1}}\}

输入描述:

\hspace{15pt}在一行上输入两个整数 n,r\left(2 \leqq n \leqq 2\times 10^5;\ 0\leqq r<n\right),表示数组长度、偏移量。

输出描述:

\hspace{15pt}在一行上输出 n 个整数 a_1,a_2,\dots,a_n \left(-10^9 \leqq a_i \leqq 10^9\right),表示构造出的数组。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
6 0

输出

复制
2 2 2 2 2 -100

说明

\hspace{15pt}在这个样例中:
\hspace{23pt}\bullet\,当偏移量为 0 时,数组保持不变,此时的前缀和依次为 2,4,6,8,10,-90,严格大于 0 的前缀有 5 个;
\hspace{23pt}\bullet\,当偏移量为 1 时,数组变为 \{2,2,2,2,-100,{\color{orange}{2}}\},此时的前缀和依次为 2,4,6,8,-92,-90,严格大于 0 的前缀有 4 个;
\hspace{23pt}\bullet\,当偏移量为 2 时,数组变为 \{2,2,2,-100,{\color{orange}{2}},{\color{orange}{2}}\},此时的前缀和依次为 2,4,6,-94,-92,-90,严格大于 0 的前缀有 3 个;
\hspace{23pt}\bullet\,当偏移量为 3 时,严格大于 0 的前缀有 2 个;
\hspace{23pt}\bullet\,当偏移量为 4 时,严格大于 0 的前缀有 1 个;
\hspace{23pt}\bullet\,当偏移量为 5 时,严格大于 0 的前缀有 0 个;
\hspace{15pt}综上,当偏移量为 0 时,得分是偏移量取 0,1,\dots,{n-1} 中严格最大的,所以构造的数组是一个可行解。
示例2

输入

复制
5 2

输出

复制
4 -10 1 2 3