bzoj#P1158. [CTSC2005]玩具的重量weight
[CTSC2005]玩具的重量weight
题目描述
冰冰有三个玩具:皮卡秋、维妮孙悟空和芭比娃娃。她并不知道这些玩具的具体重量(采用 NOI 单位),但是知道 每个玩具重量的大概范围,如下表:
皮卡秋 | 维妮孙悟空 | 芭比娃娃 | |
---|---|---|---|
最小可能重量 | |||
最大可能重量 |
(表 1 玩具和它们的最小、最大可能重量)
这些范围太粗略,冰冰希望能把它们缩小一些。正好佳佳有一个电子天平,不仅可以告诉你左右两边是否一样重,还可以告诉你左边比右边重(或轻)多少。天平很大,左右两边都可以放任意多件玩具。冰冰向佳佳借电子天平,希望能算出每个玩具的精确重量。佳佳为了考验冰冰,只允许她把任意一个玩具往天平的左侧和右侧最多各放一次。例如,如果她曾经把皮卡秋放在天平的左侧,则她不能再次把它放在天平的左侧。冰冰同意了。她一共称量了两次,结果如下(数字表示左边比右边重多少):
称量结果根据结果和表 1,可以确定三个玩具的重量一定是 ,也就是说,通过称量结果所得到的更新后的重量范围是:
皮卡秋 | 维妮孙悟空 | 芭比娃娃 | |
---|---|---|---|
最小可能重量 | |||
最大可能重量 |
(表 2 根据称量结果所得到的精确范围)
冰冰以后还会买很多很多玩具,她不想每次都自己计算每个玩具的重量。她需要写一个程序计算每个玩具最精确的重量下限和上限,你能帮她吗?
输入格式
输入文件第一行包含两个整数 和 ,即玩具的个数和称量的次数。
第二行包含 个数,第 个数和第 个数分别表示第 个玩具的重量初始下限和初始上限。
以下 行,每行前三个数 表示左边的玩具数、右边的玩具数和左右两边的重量差,接下来的 个数为天平左边的玩具编号,再接下来的 个数为天平右边的玩具编号。输入保证每个玩具在天平的每一边最多出现一次。
输出格式
输出包含 个整数,第 个数和第 个数分别表示第 个玩具的重量下限和上限,即最小可能的整数重量和最大可能的整数重量。如果无解(可能是天平坏了),只输出一个数 。
3 2
1 3 2 4 3 5
1 1 -1 1 2
1 1 1 2 3
3 3 4 4 3 3
样例说明 #1
样例1对应于题目描述中的例子。
3 1
1 5 2 5 1 3
2 1 1 1 2 3
1 2 2 3 2 3
样例说明 #2
冰冰有三个玩具,重量的原始范围为 。只有一次称量,天平的左边是玩具 和玩具 ,右边是玩具 。左边比右边重 个单位。根据此结果,可以判断三个玩具的重量范围为 和 。
数据规模与约定
对于 的数据,,,,重量上限不超过 。