Log set
时间限制:30s 空间限制:256MB
题目描述
定义一个子集的和为该子集中所有数的和,特别的,定义空集的和为0。
已知一个非空多重整数集合S以及其每个子集的和,构造出原集合S,如果有多个可能的S,那么输出将S内所有元素排序后,字典序最小的一个。数据保证有解。
输入格式
第一行有一个正整数T,表示数据组数。
每组数据第一行有一个正整数n,接下来2行,第一行n个整数Si,第二行n个整数Pi,每个数对(Si,Pi)表示和为Si的子集有Pi个。
输出格式
对每组数据输出一行Case #数据编号:,接着按升序输出S中的数,可参考样例输出。
样例输入
3 8 0 1 2 3 4 5 6 7 1 1 1 1 1 1 1 1 4 0 1 3 4 4 4 4 4 5 -2 -1 0 1 2 1 2 2 2 1
样例输出
Case #1: 1 2 4 Case #2: 0 0 1 3 Case #3: -2 1 1 【样例解释】 对第三组数据,多重集-1 -1 2同样可能,但是-2 1 1的字典序更小,所以应输出-2 1 1。
提示
对于100%的数据,S的大小不超过60,n<=10000,T<=100,|Si|<=10^10,Pi>=1。
题目来源
没有写明来源