设剩余工件数量为 m=n−k,被召回的 k 件工件评级和为:
T=S−R
因为被召回的是评级最高的 k 件,所以一定存在一个分界评级 c,满足:
产线质检得到 n 件工件的质量评级序列 {v1,v2,…,vn},每件评级为 1 至 6 级之间的整数,评级总和记为 S。
随后质检流程升级,评级最高的 k 件工件被召回重测(若存在多件最高评级,召回其中任意 k 件),召回后剩余 n−k 件的评级总和记为 R。已知 1≤k<n。
现在只知道四个整数 (n,k,S,R),请还原出一组可能的原始评级序列 {v1,v2,…,vn},满足:
若不存在满足条件的序列,输出 −1。
在一行上输入四个整数 n,k,S,R(2≤n≤200000;1≤k<n;1≤R<S≤1.2×106)。
如果有解,输出一行 n 个整数,代表任意一个合法评级序列(顺序任意);
无解则输出 −1。
输入
4 2 15 5
输出
1 4 5 5
说明
评级总和 S=15,召回最高的 k=2 件后剩余 2 件和 R=5。被召回的 2 件评级均为 15−5=10,每件 10/2=5 级。剩余 2 件和为 5,分别取 4 级和 1 级,完整序列 {1,4,5,5}。
输入
3 1 10 6
输出
2 4 4
说明
总和 S=10,召回最高 k=1 件后剩余 2 件和 R=6。被召回那件评级 10−6=4 级。剩余 2 件和为 6,分别取 4 级和 2 级,完整序列 {2,4,4}。k=1 时召回一件 4 级,剩余一件 4 级与一件 2 级。
输入
3 1 10 2
输出
-1
说明
被召回那件评级应为 (10−2)/1=8 级,超出 1∼6 的范围,故无解。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册