#Y1285. 分班
时间限制1000 ms
内存限制256 MiB
通过率—0 / 0 次提交
题目描述
M名学生按输入给定顺序排列,不能重新排序。选择班级数k(1≤k≤N),把所有学生连续分成k个非空班,每班人数在[A,B]内。第1班使用第1间教室,第2班使用第2间教室,依此类推,必须使用输入中的前k间教室,不能跳过教室或重新排列教室。
学生i的敏感指数为X_i,教室j的系数为G_j(可以是负数)。令Average=⌊(X_1+...+X_M)/M⌋,评价指数为
其中g(i)是学生i所属班级编号。先最小化评价指数,其次在最优评价指数中最小化班级数,最后最小化最后一班人数。
输入
第一行T组数。每组第一行M,N,A,B;第二行M个X_i,第三行N个G_j。
输出
每组一行依次输出最小评价指数、最少班级数、该条件下最小末班人数。若不存在合法分班,输出-1 0 0。评价指数可能为负数或0。
数据范围
1≤T≤10,1≤M≤10000,1≤N≤200,1≤A≤B≤M,1≤X_i≤100000,-1000≤G_j≤1000。中间平方和及评价指数使用有符号64位整数。
输入样例
1
10 3 1 4
16 11 12 13 10 15 16 17 18 14
4 5 1
输出样例
186 3 4