P0755

[SHOI2008]Debt 循环的债务

[SHOI2008]Debt 循环的债务

Alice、Bob 和 Cynthia 一直为三人之间混乱的债务关系所困扰。终于有一天,他们决定坐下来解决这个问题。由于鉴别钞票真伪十分麻烦,他们希望在清偿所有债务的过程中,交换的钞票张数尽可能少。

例如,Alice 欠 Bob 1010 元,而 Cynthia 与他们互不相欠。假设 Alice 只有一张 5050 元钞票,Bob 有三张 1010 元钞票和十张 11 元钞票,Cynthia 有三张 2020 元钞票。

一种直接的方案是:Alice 将 5050 元钞票交给 Bob,Bob 再将自己所有的钞票找给 Alice,共有 1414 张钞票被交换。

但最优方案是:Alice 将 5050 元钞票交给 Cynthia;Cynthia 将两张 2020 元钞票交给 Alice,并将另一张 2020 元钞票交给 Bob;Bob 再将一张 1010 元钞票交给 Cynthia。这样只有 55 张钞票被交换。

请你计算,在清偿所有债务的前提下,最少需要交换多少张钞票。

输入格式

第一行包含三个整数 x1,x2,x3x_1,x_2,x_3。

  • x1x_1 表示 Alice 欠 Bob 的金额;如果 x1<0x_1<0,则表示 Bob 欠 Alice;
  • x2x_2 表示 Bob 欠 Cynthia 的金额;如果 x2<0x_2<0,则表示 Cynthia 欠 Bob;
  • x3x_3 表示 Cynthia 欠 Alice 的金额;如果 x3<0x_3<0,则表示 Alice 欠 Cynthia。

接下来三行分别描述 Alice、Bob 和 Cynthia 拥有的钞票数量,每行包含六个自然数:

a100,a50,a20,a10,a5,a1,a_{100},a_{50},a_{20},a_{10},a_5,a_1, b100,b50,b20,b10,b5,b1,b_{100},b_{50},b_{20},b_{10},b_5,b_1, c100,c50,c20,c10,c5,c1.c_{100},c_{50},c_{20},c_{10},c_5,c_1.

其中,下标表示钞票面值。例如,a100a_{100} 表示 Alice 拥有的 100100 元钞票张数,b50b_{50} 表示 Bob 拥有的 5050 元钞票张数,其余变量含义类推。

输出格式

如果可以清偿所有债务,输出需要交换的最少钞票张数。

如果无法清偿所有债务,输出 impossible。

样例输入

样例 11

10 0 0
0 1 0 0 0 0
0 0 0 3 0 10
 0 0 3 0 0 0

样例 22

-10 -10 -10
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

样例输出

样例 11

5

样例 22

0

数据范围

  • −103≤x1,x2,x3≤103-10^3\le x_1,x_2,x_3\le 10^3;
  • a10+a5+a1≤30a_{10}+a_5+a_1\le 30;
  • b10+b5+b1≤30b_{10}+b_5+b_1\le 30;
  • c10+c5+c1≤30c_{10}+c_5+c_1\le 30;
  • 三人拥有的所有钞票的面值总额不超过 10310^3 元。

来源与许可

本题为 SHOI 2008 试题「循环的债务」,题面与测试数据整理自 BZOJ。

样例 1

输入

10 0 0
0 1 0 0 0 0
0 0 0 3 0 10
 0 0 3 0 0 0

输出

5

样例 2

输入

-10 -10 -10
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

输出

0