#P1874. Trade on Verweggistan

Trade on Verweggistan

题目描述

自彼得·斯特伊弗桑特(Peter Stuyvesant)和亚伯·塔斯曼(Abel Tasman)的时代起,荷兰商人就周游世界进行商品买卖。曾经在弗韦吉斯坦(Verweggistan)有过一段短暂的贸易,但很快就结束了。读完这个故事后,你就会明白原因。

那时,弗韦吉斯坦非常受欢迎,因为它是世界上唯一一个能生产"普鲁尔"(prul)的地方。弗韦吉斯坦贸易的终结也意味着普鲁尔(或荷兰语复数形式"prullen")贸易的终结,如今很少有人知道普鲁尔到底是什么。

普鲁尔是在工场中制造的。每当一个普鲁尔制作完成,它会被装入一个盒子,然后放在之前生产的普鲁尔堆的顶部。每个盒子的侧面都标有价格。价格取决于制造普鲁尔所需的时间。如果一切顺利,一个普鲁尔的成本可能是一到两弗罗林,但在糟糕的日子里,价格可能轻松涨到15弗罗林甚至更高。这与质量无关;所有普鲁尔的价值都是相同的。

在那个年代,普鲁尔在荷兰的售价是每个10弗罗林。运输成本可以忽略不计,因为普鲁尔是作为额外货物搭载在原本就会航行的船只上。当荷兰商人前往弗韦吉斯坦时,他们的目的很明确:购买普鲁尔,在荷兰销售,并最大化利润。不幸的是,弗韦吉斯坦的普鲁尔交易方式使得这一目标比想象中更加复杂。

人们可能会认为商人只需购买最便宜的普鲁尔,而价格超过10弗罗林的普鲁尔会无人问津。但不幸的是,弗韦吉斯坦的所有工场都以特定的顺序出售普鲁尔。堆顶的盒子最先出售,然后是堆顶的第二个盒子,依此类推。因此,即使堆顶第五个盒子是最便宜的,商人也必须先购买堆顶的四个盒子才能得到它。

可以想象,这使得商人很难通过购买正确的普鲁尔组合来最大化利润。由于当时没有计算机辅助优化,他们很快就对普鲁尔贸易失去了兴趣。

在这个问题中,你将获得多个工场堆的描述。你需要计算商人在遵守上述限制的情况下,通过从这些堆中购买普鲁尔所能获得的最大利润。此外,你还需要确定为了实现这一利润,商人需要购买的普鲁尔数量。

输入格式

输入包含多个测试用例。每个测试用例的第一行是一个整数ww,表示工场的数量1<=w<=50(1 <= w <= 50)

接下来是w行,每行描述一个普鲁尔堆。每行的第一个数字是堆中盒子的数量b0<=b<=20b(0 <= b <= 20),随后是b个正整数,表示堆中普鲁尔的价格(单位为弗罗林),按从顶到底的顺序给出。

输入以w=0w = 0结束,此时不应处理该测试用例。

输出格式

对于每个测试用例,输出测试用例编号(1, 2, ...)。然后输出两行:

  • 第一行输出商人可以获得的最大利润。
  • 第二行输出商人需要购买的普鲁尔数量以实现这一利润。如果数量不唯一,按升序输出所有可能的值。如果可能的值超过10个,只输出最小的10个。

测试用例之间用空行分隔。

输入数据 1

1
6 12 3 10 7 16 5
2
5 7 3 11 9 10
9 1 2 3 4 10 16 10 4 16
0

输出数据 1

Workyards 1
Maximum profit is 8.
Number of pruls to buy: 4

Workyards 2
Maximum profit is 40.
Number of pruls to buy: 6 7 8 9 10 12 13