CF260C Balls and Boxes
题目描述
小 Vasya 的房间里有 $n$ 个盒子,每个盒子里都装有若干球。盒子排成一排,从左到右依次编号为 $1$ 到 $n$。
有一次,Vasya 选择了其中一个盒子,假设其编号为 $i$,他把这个盒子里的所有球都拿出来(保证该盒子原本至少有一个球),然后开始把球逐个放到编号为 $i+1$、$i+2$、$i+3$ …… 的盒子里。如果当前球放进了编号为 $n$ 的盒子,那么下一个球会放进编号为 $1$ 的盒子,接下来依次放到 $2$ 号盒子,以此类推。如此循环,直到手中的球全部放完。一个盒子可能会被放入多个球,有些球可能会再次被放入编号为 $i$ 的盒子。如果 $i=n$,Vasya 会把第一个球放到编号为 $1$ 的盒子,接下来分别放到 $2$ 号盒子,以此类推。
例如,假设最开始有四个盒子,分别有 $3$、$2$、$5$、$4$ 个球。如果 $i=3$,那么 Vasya 会把第 $3$ 号盒子的 $5$ 个球全部拿出,依次放到编号为 $4,1,2,3,4$ 的盒子中。操作完成后,盒子里的球数分别变为:第一个盒子 $4$ 个,第二个 $3$ 个,第三个 $1$ 个,第四个 $6$ 个。
现在 Vasya 已经完全忘记了球的初始分布,但他知道经过操作后每个盒子中的球数,以及 $x$——最后一个被放球的盒子的编号。
他希望你帮他推断出盒子中球的初始分布情况。
输入格式
第一行包含两个整数 $n$ 和 $x$($2 \leq n \leq 10^{5}$,$1 \leq x \leq n$),分别表示盒子的数量和最后一个球被放入的盒子的编号。
第二行包含 $n$ 个用空格分隔的整数 $a_{1}, a_{2}, ..., a_{n}$,其中 $a_{i}$($0 \leq a_{i} \leq 10^{9}$,$a_{x} \neq 0$)表示操作结束后编号为 $i$ 的盒子中球的数量。
请不要在 C++ 代码中使用 %lld 读或写 64 位整数,建议使用 cin、cout 流或 %I64d 格式。
输出格式
输出 $n$ 个整数,第 $i$ 个整数表示操作开始前编号为 $i$ 的盒子中球的数量。用空格分隔。如果有多组正确解,输出任意一组都可以。
说明/提示
由 ChatGPT 5 翻译