【拾题杂谈】GYM100517E Exam Scoring
题面
题目描述
安德鲁在圣彼得堡国立搜索大学教授算法和数据结构课程,教授信息纳米技术、力学和光学。今天,他正在为他的学生举办笔试。考试包括 $n$ 个必须解决并提交评估的任务。
安德鲁检查了所有学生的考试作业,并了解每个学生和每个任务是否解决了。现在,他想为每个任务分配积分,以便由较少的学生解决的更难的任务获得更多积分。分配给任务的分数必须加起来为 $s$ 。
形式上,设 $a_i$ 为完成第 $i$ 个任务的学生人数,设 $a_i$ 为每个 $i$ 且大于 $0$ 。安德鲁想要一些 $b_i$ ,即 $a_ib_i = c$ 对于所有 $i$ ,其中 $c$ 是常数,$\sum\limits_{i = 1}^{n}b_i = s$ 。
不幸的是,这样的 $b_i$ 可能是分数。安德鲁不喜欢分数,所以他想用最小二乘法用整数 $p_i$ 来近似 $b_i$ 。此外,安德鲁认为给某些任务打得太低或太高都是不公平的。因此,对于给定的 $L$ 和 $U
$ ,每个任务的分数必须介于 $L$ 和 $U$ 之间(包括 $L$ 和 $U$ )。
所以现在安德鲁需要找到整数值 $p_i$ ,使得对于所有的 $i$ ,$L ≤ p_i ≤ U$ 、且 $\sum\limits_{i = 1} ^ {n} (b_i-p_i)^2$ 是最小的方法。
安德鲁检查学生的作业很累,所以他让作为他的助手的你,做给任务分配分数的工作。
输入格式
输入包含多组数据。
每组数据第一行包含两个整数 $n,s\ \ (1\le n \le 100 , n\le s \le10^9)$ 。
第二行有 $n$ 个整数,$a_1 ,a_2,…,a_n\ \ (1\le a_i \le 18)$ 。
第三行只有两个数字 $L, U \ \ (1\le L \le U \le s , Ln \le s \le Un)$ 。
最后一行输入两个零表示读入结束,总数据组数不超过 1000 组。
输出格式
对于每一个数据,输出 $n$ 个整数,表示 $p_i$ 。
样例输入
1 | 4 100 |
样例输出
1 | 30 30 25 15 |