Problem1084--选凳子 ( 2016 创新班 )

1084: 选凳子 ( 2016 创新班 )

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

Description

从左往右有无限多张凳子,凳子的编号从左往右依次是:1,2,3,4,5,6......。有N只奶牛排着队正走过来,N只奶牛的编号分别用1,2,3,4,...N来表示。它们要找合适的凳子坐。每只奶牛选择凳子的规则都是:
(1)、奶牛都不喜欢太拥挤,于是奶牛选择的凳子左边D距离内不能有其它奶牛坐,右边D距离内也不能有奶牛坐。比如:两头奶牛,当D=10时,一只奶牛选择编号是47的凳子,另一只选择编号是57的凳子,这是合法的。当D=10时,一只奶牛选择编号是47的凳子,另一只选择编号是56的凳子,这是不合法的,因为他们之间的距离小于10。
(2)、对于第i只奶牛来说,它选择的凳子的编号必须大于或等于A[i]。
(3)、在满足第(1)、第(2)点的前提下,奶牛会尽量选择编号小的凳子坐下来。

现在这N只奶牛按照编号从小到大的顺序排好了队,编号是1的奶牛排在最前面,它首先按照如上的规则选好凳子后就坐下来,接着是编号是2的奶牛选择凳子后坐下来,接着是编号是3的奶牛选择凳子后坐下来 ,......最后选择凳子的奶牛是第N只奶牛。
你的任务是:输出编号是1至N的奶牛,它们各自选择的凳子的编号。

Input

多组测试数据。
  第一行,一个整数R,表示有R组测试数据。1 <= R <= 6。
  每组测试数据格式如下:
  第一行,两个正整数,N和D。 1 <= N <= 1000。 1 <= D <= 10^6。
  第二行,N个整数,第i个整数表示A[i]。 1 <= A[i] <= 10^6。

Output

共R行,每行对应一组测试数据。
每组测试数据的输出都是一行,该行包含N个整数,空格分开,第i个整数表示第i只奶牛选择的凳子的编号。

Sample Input Copy

5
4 10
1 21 11 7 
4 11
1 21 11 7 
4 1000000
1000000 1000000 1000000 1 
4 999999
1000000 1000000 1000000 1 
4 1
8 7 5 1

Sample Output Copy

1 21 11 31 
1 21 32 43 
1000000 2000000 3000000 4000000 
1000000 1999999 2999998 1 
8 7 5 1

Source/Category