CF1271F Divide The Students

题目描述

最近有许多学生报名了 Berland 州大学。所有的学生被分到了不同的组,但后来人们发现有些组实在是太大了,以至于不能在同一个教室上课,因此这些组要被分成两个小组。你的任务是帮助学校把计算机科学学院一年级的学生分小组。 计算机科学学院一共有 $t$ 组学生。每个学生有三门功课:数学、编程和体育。每门课的教室不一样——数学课在礼堂上,编程课在机房上,体育课在体育馆上。 每一组都要被分成两个小组,使得每个小组的每个教室都能够容纳这个小组来上这一门课的所有学生。对于第 $i$ 个组的第一个小组,数学课的上课地点是一个可以容纳 $a_{i,1}$ 个学生的礼堂,编程课的上课地点是一个可以容纳 $b_{i,1}$ 个学生的机房,体育课的上课地点是一个可以容纳 $c_{i,1}$ 个学生的体育馆。类似地,第二个小组的礼堂、机房和体育馆分别可以容纳 $a_{i,2},b_{i,2},c_{i,2}$ 个学生。 和通常一样,有些学生会翘课。每个学生都认为,这三门功课中的 $0\sim 3$ 门是没用的,他会翘掉这些他认为没用的课,只上其他的课。这个数据会按下面的格式给出。第 $i$ 个组有: 1. $d_{i,1}$ 名学生上所有的课 2. $d_{i,2}$ 名学生上数学和编程课 3. $d_{i,3}$ 名学生上数学和体育课 4. $d_{i,4}$ 名学生只上数学课 5. $d_{i,5}$ 名学生上编程和体育课 6. $d_{i,6}$ 名学生只上编程课 7. $d_{i,7}$ 名学生只上体育课 事实上还有一些什么课都不上的学生,他们不会占用任何教室空间,所以在这个问题中我们不需要知道他们有多少人,处理他们是教务处的事(大雾)。 你的任务是把每一个组分成两个小组,使得每个小组的礼堂、机房和体育馆都有足够的空间容纳这个小组要上这门课的学生(如果可能的话)。第 $i$ 个组的每一个学生都必须恰属于某一个小组(第一小组或第二小组),禁止在组之间调剂学生(不服从调剂)。

输入格式

输入的第一行有一个整数 $t\ (1\le t\le 300)$,表示组的数量。 接下来描述这 $t$ 个组。第 $i$ 个组的描述有三行: - 描述的第一行有三个整数 $a_{i,1},b_{i,1},c_{i,1}\ (1 \le a_{i, 1}, b_{i, 1}, c_{i, 1} \le 3000)$,分别表示这个组的第一小组的礼堂、机房和体育馆的容量 - 描述的第二行有三个整数 $a_{i,2},b_{i,2},c_{i,2}\ (1 \le a_{i, 2}, b_{i, 2}, c_{i, 2} \le 3000)$,分别表示这个组的第二小组的礼堂、机房和体育馆的容量 - 描述的第三行有七个整数 $d_{i,1},d_{i,2},\cdots,d_{i,7}\ (0 \le d_{i, j} \le 3000)$,分别表示第 $i$ 个组中前面提到的七类学生的人数。并不保证 $d_{i,1}+d_{i,2}+\cdots+d_{i,7}$ 是正数,因为一个组可以只包含全部翘课的学生(这样的组好危险)。 数据保证所有 $t$ 个组的学生总数不超过 $3000$。

输出格式

对于每个组,输出一行表示划分方案,格式如下。 - 如果不可能把这个组分成符合题意的两个小组,那么输出一行一个整数 $-1$ - 否则输出一行七个以空格分隔的整数 $f_{i,1},f_{i,2},\cdots,f_{i,7} \ (0\le f_{i,j} \le d_{i,j})$,分别表示**第一小组**的第一类到第七类的学生人数(其他的学生会被分到第二小组)。如果有多组解,可以输出任意一组。 #### 样例输入 ```plain 3 9 4 13 1 10 3 1 2 3 4 5 6 7 9 4 13 1 10 3 2 1 3 4 5 6 7 1 2 3 4 5 6 0 0 0 0 0 0 0 ``` #### 样例输出 ```plain 1 1 3 4 2 0 7 -1 0 0 0 0 0 0 0 ```