#P17380. [PacNW 2025] Bus Seating

[PacNW 2025] Bus Seating

题目描述

一辆公交车有 nn 排座位,编号为 11nn,每排有 kk 个座位。共有 mm 个人依次上车。每个人都有自己最喜欢的一排;如果能坐在那里,就会获得效用 CC。人们更喜欢坐在靠近自己最喜欢位置的排:若某人最喜欢第 rxr_x 排,而实际坐在第 ryr_y 排,通常能获得 CrxryC-|r_x-r_y| 的效用。

不过,这些人也都很内向。目标排中每多坐着一个人,这名乘客能获得的效用就会减半。形式化地说,若第 ryr_y 排已经坐着 pp 个人,而该乘客最喜欢第 rxr_x 排,那么坐在第 ryr_y 排得到的效用为

Crxry2p.\frac{C-|r_x-r_y|}{2^p}.

每个座位恰好能坐一人,因此如果一排的 kk 个座位全部被占用,就不能再选择这一排。

每个人都会在决定座位的当时最大化自己的效用。若达到最大效用的排不唯一,就在其中选择编号最小的一排。坐下后,任何人都不会再换排。请确定每个人最终坐在哪一排。

输入格式

第一行包含四个整数 n,k,m,Cn,k,m,C,满足 1n,k,m21051\le n,k,m\le2\cdot10^5nC109n\le C\le10^9mnkm\le n\cdot k,分别表示公交车的排数、每排座位数、上车人数,以及坐在最喜欢的一排时的效用。

第二行包含 mm 个整数 a1,a2,,ama_1,a_2,\ldots,a_m1ain1\le a_i\le n),其中 aia_i 是第 ii 个人最喜欢的一排。乘客按输入顺序依次就座。

输出格式

输出一行 mm 个整数 b1,b2,,bmb_1,b_2,\ldots,b_m1bin1\le b_i\le n),其中 bib_i 表示第 ii 个人所坐的排。

3 2 6 4
3 2 3 2 2 1
3 2 1 2 1 3
2 5 8 1000000000
2 2 2 2 2 2 2 2
2 1 2 1 2 1 2 1

提示

在样例 1 中,每个人选择座位时各排的效用如下:

  1. 最喜欢第 33 排的乘客面对的效用为 [42,41,40]=[2,3,4][4-2,4-1,4-0]=[2,3,4],因此选择第 33 排。
  2. 最喜欢第 22 排的乘客面对的效用为 [41,40,(41)/2]=[3,4,1.5][4-1,4-0,(4-1)/2]=[3,4,1.5],因此选择第 22 排。
  3. 最喜欢第 33 排的乘客面对的效用为 [42,(41)/2,(40)/2]=[2,1.5,2][4-2,(4-1)/2,(4-0)/2]=[2,1.5,2],因此选择第 11 排。
  4. 最喜欢第 22 排的乘客面对的效用为 [(41)/2,(40)/2,(41)/2]=[1.5,2,1.5][(4-1)/2,(4-0)/2,(4-1)/2]=[1.5,2,1.5],因此选择第 22 排。
  5. 最喜欢第 22 排的乘客面对的效用为 [(41)/2,(40)/4,(41)/2]=[1.5,1,1.5][(4-1)/2,(4-0)/4,(4-1)/2]=[1.5,1,1.5],因此选择第 11 排。
  6. 最喜欢第 11 排的乘客面对的效用为 [(40)/4,(41)/4,(42)/2]=[1,0.75,1][(4-0)/4,(4-1)/4,(4-2)/2]=[1,0.75,1]。由于第 11 排已经坐满,因此选择第 33 排。