A104750.雾港冲刺营的队伍序列

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

雾港冲刺营的报名处排着长队。工作人员会把所有人的昵称拿去做一次“统一排序”:按昵称的字典序从小到大重新排队。你报名得最晚,所以如果出现同名的人,你一定会排在所有同名者的最后面。

你的昵称是一个长度为 nn 的小写字母字符串 SS。第 ii 个位置的“改动单价”为 pip_i:把该位置的字母降低 11 位(例如 d -> c)需要支付 pip_i 枚代币。你只能把字母变小,不能变大。

更具体地,把第 ii 位从字符 x 改成字符 yyxy\le x,其中 a=0,b=1,,z=25a=0,b=1,\dots,z=25),需要支付

((xy)×pi)((x-y)\times p_i)

枚代币。

不过实验室对你有两条限制:

  • 你最多只能修改 KK 个不同的位置(同一个位置无论降低多少位,都只算修改了 11 个位置);
  • 你总花费不超过 BB 枚代币。

队伍里除了你以外还有 mm 个人,他们的昵称各不相同也可能相同(长度不一定相同)。重排规则为:

  1. 先按昵称字典序从小到大排序;
  2. 若昵称完全相同,则按报名先后排序;你报名最晚,因此同名时你排在最后。

字典序比较按通常字符串比较:从左到右找第一处不同字符,较小者更小;若一方是另一方的前缀,则较短的字符串更小

请你在限制内修改自己的昵称,使得你在重排后的队伍中名次(从 11 开始)尽可能小,并输出这个最小名次与对应的最终昵称。若能达到最小名次的方案不唯一,输出其中字典序最小的最终昵称。

输入格式

第一行四个整数 n,m,K,Bn,m,K,B

第二行一个长度为 nn 的字符串 SS(只含小写字母)。

接下来 mm 行,每行一个字符串,表示其他人的昵称(只含小写字母,长度任意)。

最后一行 nn 个整数 p1,p2,,pnp_1,p_2,\dots,p_n

输出格式

第一行输出一个整数,表示你能达到的最小名次。

第二行输出一个字符串,表示达到该名次的最终昵称(若有多种,输出字典序最小的)。

输入输出样例

  • 输入#1

    5 4 2 10
    candy
    aamdy
    aamdz
    abbbb
    zzzzz
    3 1 4 2 1

    输出#1

    2
    aamdy

说明/提示

样例解释

你可以把 candy 改成 aamdy。例如第 11c->a 降低 22 位,花费 2×3=62\times3=6;第 33n->m 降低 11 位,花费 1×4=41\times4=4。此时共修改了 22 个位置、总花费 1010,满足限制。队伍里已经有人昵称为 aamdy,同名时你报名最晚,所以你排在他后面,名次为 22。可以验证在限制内不可能得到名次 11,因此答案是 22


数据范围

  • 0Kn0\le K\le n
  • 0B10180\le B\le 10^{18}
  • 1pi1091\le p_i\le 10^{9}
  • 其他人的昵称只包含小写字母
测试点编号 nn 上界
141\sim4 n20n\le 20
5105\sim10 n10000n\le 10000
112011\sim20 n200000n\le 200000
首页