题目背景
你的钱里面混进去了一个假币。
题目描述
你有 n 枚硬币。经过准确的测量,你发现一定有一枚是假币,假币的质量与其他硬币不同。你想要找出这枚假币。
第 i 轮,假设你当时有 xi 枚硬币,你会把当前钱堆所有钱分配到若干组,每组 ki 个,最终剩下的再单独分一组。每个硬币你要拿起来需要 a 秒,那么这将会花费你 axi 秒的时间。接下来,你会称量每一组,称量每组需要 b 秒,所以这将会花费你 b⋅⌈kixi⌉ 秒的时间。由于只有一枚假币,那么只会有一堆的质量与正常的质量不同。在称量所有堆之后,你将会选出与正常质量不同的那一堆,并进入下一轮,让 xi+1=ki。一直执行,直到 xi=1。假设进行了 m 轮,那么花费时间 f=i=1∑m(axi+b⋅⌈kixi⌉)
请问,你在最差情况下(即每轮选出不正常的都是 ki 个一堆的)最少需要多长时间找出那枚假币?
输入格式
一行三个正整数,代表 n,a,b。
输出格式
第一行两个个非负整数 f,m,代表最小可能的时间和你的方案的轮数。
接下来一行 m 个正整数,代表 ki。
提示
说明
你需要尽量使得花费的时间更少。
本题采用 Special Judge。
首先,你输出的答案一定要合法,也就是你输出的答案要与下面的选择方法符合,否则将获得 0 分。
接下来,评测机会对你的输出进行判断。如果你输出的答案合法且与正确答案的差 ≤9,那么你将获得 (10−d)×100% 的分数。例如,如果你输出的答案与正确答案的差为 4,那么你将获得 60% 的分数。如果你输出的答案等于正确答案,你将获得 100% 的分数。请不要输出多余的数字或少输出。
数据范围
- subtask 1(10pts): 1≤n≤2000。
- subtask 2(20pts): 1≤n≤75000。
- subtask 3(30pts): 1≤n≤107。
- subtask 4(40pts): 1≤n≤109。
对于所有数据,满足 0<a,b≤109。
样例说明
对于第一个样例,进行两轮。x1=20,k1=4,x2=4,k2=1。答案 f=20+15+4+12=51。