P0540

数据挖掘

数据挖掘

Tuple 博士正在为 ACM(Advanced Commercial Merchandise)公司开发一个数据挖掘的软件。其中一个子程序是用来处理两个数组的,设两个数组分别为 PP 和 QQ,均含 NN 个元素,编号为 00 到 N−1N-1。数组 PP 是一个带关键字的 hash 表,用来存放需要处理的元素,这些元素对应的数据可以通过数组 QQ 找到。

数组 PP 中每个元素的大小为 SpS_p 字节,数组 QQ 中每个元素的大小为 SqS_q 字节。Tuple 博士希望这个子程序的效率越高越好,因为它是整个软件的关键。但是 SpS_p 和 SqS_q 只有等到程序运行的时候才能知道,因此是不可能在编译时优化的。

我们都知道最直接的寻址方式:

Pofs(i)=Sp×i,(1)P_{\mathrm{ofs}}(i)=S_p\times i,\qquad(1) Qofs(i)=Sq×i.(2)Q_{\mathrm{ofs}}(i)=S_q\times i.\qquad(2)

但是,乘法运算要比加减法慢得多。可喜的是,Tuple 博士成功地避免了使用乘法运算:在整个软件中,他总是用每个元素的地址 Pofs(i)P_{\mathrm{ofs}}(i) 代替该元素的序号 ii,在计算与第 ii 个元素相邻的元素地址时,只要用下面这两个简单的公式即可:

Pofs(i+1)=Pofs(i)+Sp,Pofs(i−1)=Pofs(i)−Sp.P_{\mathrm{ofs}}(i+1)=P_{\mathrm{ofs}}(i)+S_p,\qquad P_{\mathrm{ofs}}(i-1)=P_{\mathrm{ofs}}(i)-S_p.

因为 PP 和 QQ 是一个整体,每当数组 PP 中的元素被修改时,QQ 中元素也要作相应的变动。Qofs(i)Q_{\mathrm{ofs}}(i) 可以用 Pofs(i)P_{\mathrm{ofs}}(i) 直接求得:

Qofs(i)=Pofs(i)/Sp×Sq.(3)Q_{\mathrm{ofs}}(i)=P_{\mathrm{ofs}}(i)/S_p\times S_q.\qquad(3)

然而这个公式不仅要用到乘法,而且要用到除法,虽然仅仅是整数除法,但是速度还是很慢。经过研究,Tuple 博士发现可以用一个更快的公式代替上述公式:

Qofs′(i)=(Pofs(i)+Pofs(i)≪A)≫B.(4)Q'_{\mathrm{ofs}}(i)=\bigl(P_{\mathrm{ofs}}(i)+P_{\mathrm{ofs}}(i)\ll A\bigr)\gg B.\qquad(4)

其中 AA 和 BB 是非负整数,≪A\ll A 表示左移 AA 位(相当于乘以 2A2^A),≫B\gg B 表示右移 BB 位(相当于除以 2B2^B)。

这个公式的效率显然比公式 (3)(3) 高多了,不过不是总能找到 AA 和 BB 使之能和公式 (3)(3) 产生一样的结果的。而且,这个公式可能会牺牲更多的内存。

如果使用公式 (2)(2) 的话,存放数组 QQ 只需要 N×SqN\times S_q 字节就够了。Tuple 博士发现,如果使用公式 (4)(4) 的话,总能够找到一个 KK(K≥N×SqK\ge N\times S_q),用 KK 字节存放数组 QQ 并恰当地选择 AA 和 BB,使得所有的元素都不重叠。

请你编写一个程序,在所有可行的解当中找到 KK 最小的;如果有多组解的话,输出 AA 最小的;如果还有多组解,输出 BB 最小的。公式的运算过程中可能出现非常大的整数,请你注意不要溢出,不过你不用担心 Tuple 博士的电脑会溢出。

输入格式

仅一行,三个整数 NN、SpS_p、SqS_q。

输出格式

仅一行,三个整数 KK、AA、BB,相邻两个整数之间用一个空格隔开。

样例输入

20 3 5

样例输出

119 0 0

样例解释

取 A=B=0A=B=0 时,公式 (4)(4) 化为 Qofs′(i)=2Sp i=6iQ'_{\mathrm{ofs}}(i)=2S_p\,i=6i,于是 2020 个元素依次占据字节区间 [0,5)[0,5)、[6,11)[6,11)、…\dots、[114,119)[114,119),互不重叠,共需 119119 字节,这就是最小的 KK。

数据范围

  • 1≤N≤2201\le N\le 2^{20};
  • 1≤Sp≤2101\le S_p\le 2^{10};
  • 1≤Sq≤2101\le S_q\le 2^{10}。

来源与许可

本题为「数据挖掘」,题面与测试数据整理自 BZOJ 2478。

样例 1

输入

20 3 5

输出

119 0 0