【题目背景】
星尘镇的暴政已经被推翻,留在各处仓库中的物资却依旧丰歉不一。为了让镇民能够重新安排生活,tfbz 决定先平衡这些仓库的储备。
【题目描述】
星尘镇共有 n 座仓库,第 i 座仓库最初存有 ci 单位物资。tfbz 可以进行任意多次操作,每次从下列两种方式中选择一种:
- 选择一座仓库,向其中运入 a 单位物资;
- 选择一座仓库,向其中运入 b 单位物资。
两种操作中的 a,b 均为固定正整数。tfbz 可以反复选择同一座仓库,也可以不进行任何操作。
在一次调整结束后,记物资最多的仓库与物资最少的仓库之间的储备量之差为这次调整的储备差。tfbz 希望最终的储备差尽可能小。
对于每组给定的仓库储备,请求出经过任意多次操作后最小可能的储备差。
【输入格式】
从文件 balance.in 中读入数据。
第一行一个整数 T,表示测试数据的组数。
对于每组测试数据:
- 第一行三个正整数 n,a,b,分别表示仓库数量和两种操作增加的物资量;
- 第二行 n 个正整数 c1,c2,⋯,cn,表示各座仓库最初的物资量。
【输出格式】
输出到文件 balance.out 中。
对于每组测试数据,输出一行一个整数,表示最小可能的储备差。
【样例 1 输入】
1324 5 531 3 4 444 2 351 3 4 663 15 971 9 5
【样例 1 输出】
【说明/提示】
【样例 1 解释】
对于第一组测试数据,可以向第一座仓库运入 5 单位物资,此时各仓库的储备量依次为 6,3,4,4,储备差为 3。
对于第二组测试数据,可以通过若干次操作使四座仓库的储备量都变为 6,因此最小的储备差为 0。
【样例 2】
见选手目录下的 balance/balance2.in 和 balance/balance2.ans。
该组样例符合测试点 1∼4 的数据范围。
【样例 3】
见选手目录下的 balance/balance3.in 和 balance/balance3.ans。
该组样例符合测试点 5∼8 的数据范围。
【样例 4】
见选手目录下的 balance/balance4.in 和 balance/balance4.ans。
该组样例符合测试点 9∼12 的数据范围。
【样例 5】
见选手目录下的 balance/balance5.in 和 balance/balance5.ans。
该组样例符合测试点 13∼15 的数据范围。
【样例 6】
见选手目录下的 balance/balance6.in 和 balance/balance6.ans。
该组样例符合测试点 16∼20 的数据范围。
【数据范围】
对于 100% 的数据,保证:1≤T≤104,1≤n≤105,单个测试点内 ∑n≤105,1≤a,b,ci≤109。
特殊性质:保证 a=b。