CFCF2181A.Alphabet City
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Al 是 Alphabet City 的一名城市设计师,今天他的任务是为 n 条城市街道准备招牌。在 Alphabet City,街道标牌仅由街道名称组成,这些名称全都由一模一样的英文字母金属牌印制而成。例如,如果在夜间有人偷偷交换了 NERC 街和 NEF 街招牌上的首字母,第二天没人会发现差别,因为两块牌上的字母 ‘N’ 完全一样。
Al 计划在每条街道上都放置 m 个招牌,并且他已经从冶金厂为每个街道名称订购了所需数量的铜牌。然而,就在订单到货前一小时,冶金厂的经理打来电话,带来了一个令人沮丧的消息:他们丢失了一个街道名称的订单!为了缓解这个问题,Al 决定暂时为订单未丢失的每条街道尽可能多制作招牌,并用剩下的字母,尝试为丢失订单的那条街道至少制作一个招牌。
具体来说,若街道名称为 s1,…,sn,ℓ 表示丢失订单的编号,则 Al 关心的是最大的整数 k,使得可以用 s1,…,sℓ−1,sℓ+1,…,sn 的 m 份字母,制作出 s1,…,sℓ−1,sℓ+1,…,sn 各 k 块招牌,并且还能至少制作一块 sℓ 的招牌;或者判定对于所有非负整数 k,该目标都无法实现。
Al 还不知道丢失的是哪一项。请编写程序,给定 m 和所有街道名称,对于每个 ℓ∈{1,2,…,n},输出最大的 k,若无解则输出 −1。
输入格式
第一行为两个整数 n 和 m,分别表示需要制作标牌的街道数量和每条街道最初要制作的招牌数(2≤n≤2×105,1≤m≤5×105)。接下来的 n 行每行包含一个字符串 si,表示第 i 条街道的名称(1≤∣si∣≤5×105)。所有名称均由大写英文字母组成,名称可能会重复。保证所有街道名称的总长度不超过 5×105。
输出格式
输出 n 个整数,第 ℓ 个整数表示最大整数 k,使得用 m×s1,…,m×sℓ−1,m×sℓ+1,…,m×sn 的字母可以拼出 k 份 s1,…,sℓ−1,sℓ+1,…,sn,并且可以再拼出至少一个 sℓ;如果对于该 ℓ,任意 k≥0 都不能满足条件,则输出 −1。
输入输出样例
输入#1
3 10 NEERC NERC NEF
输出#1
9 9 -1