ZOJ Problem Set - 3158
Li Lei and Han Meimei love each other so much that they can not be separated for even one minute. They have promised each other to share all the happy things and delicious foods. In the Saint Valentine's Day in 2009, they bought one big tasty cake and tried to divide it into two shares with only one cut. Here comes the problem:
The cake they bought is in the shape of rectangle which is made up of m*n units(each units is a 1*1 square). Since the cake is delicious, each unit in the cake has a nutrition_num. For each unit, the nutrition_num can be either positive or negative because there may be various kinds of nutrition in different kinds of food(either useful or harmful for our health). They want to divide the cake into two shares with the difference between the total nutrition of the two does not exceed an expeced value t(The total nutrition of a share is defined as the sum of all the units' nutrition_num in it). If it is possible, they'll eat their cake happily. Otherwise, they may buy another one =_=b
When cutting the cake, they'll keep their knife moving just along the edge between two units in order to save more nutrition(we can assume that the center of one unit contains the main nurition). They'll cut the cake from the upside to the downside(from line 1 to line m) without moving the knife off the cake. Each cutting must be forward, which means it is not allowed to move to the units in line k-1 next time when the knife is in line k(1 <= k <= m). And to make the two shares they finally get in good shape, they never take the knife up before it reachs the downside.
The picture below shows you a possible cut for a given cake:
In the picture, the two shares they get will be the two parts divided by the bold line. The total nutrition of the left part will be 1+2+4+5+(-6)+0+7+(-1)=12, and the nutrition of the right one will be (-9)+7+2+4+(-3)+1+3+2=7, so there difference is 5.
Now you are given the description for the cake they've got, could you write a program to tell them whether they can achieve their goal?
The input file will contain multiple test cases. In each case, the first line contains two integers m and n(1 <= m,n <=7) showing the size of the cake.Then m lines follow, each line contains n integers.Every interger represents the nutrition_num for the corresponding unit in the cake.The last line for each case contains only one positive integer t, the expected value they wish the difference of the two shares be.
For each test case, if it is possible to find a way cutting the cake up to their expectation, output the minimum difference you can get in a single line. Output "You'd better buy another one!" in a single line otherwise.
2 2 1 2 3 4 5 3 3 1 -2 9 2 10 33 -100 2 4 7
2 You'd better buy another one!
Author: HE, Xing
Source: ZOJ Monthly, February 2009