#P1297. Supermarket
Supermarket
描述
琼斯先生是个模范丈夫。每周六早上,琼斯夫人都会给他一份超市购物清单,他会严格按照要求购买,总是挑选价格最低的品牌。然而,琼斯先生讨厌在周六去超市,因为超市过道里挤满了购物者。他想改变购物方式。不再为了购买妻子清单上的商品而来回奔波,他将尝试只经过每个过道一次,就按清单上的顺序拿到商品。所以他请你写一个程序来帮助他实现这种新的购物方式。
给定超市中商品的信息及其在琼斯先生行进路线中出现的顺序所对应的价格,以及他妻子给出的商品清单,你的程序必须确定他要支付的最低费用。
琼斯先生按照琼斯夫人清单上的顺序购买商品,并且他在走过过道时从不回头。因此,如果他在途中把第个商品当作清单上的第个商品购买,那么下一个要购买的商品就是清单上的第个商品,并且它必须从他行进路线中之后的商品中购买。下图显示了一个例子,其中产品用整数标识。注意,同一产品的不同品牌可能会分别出现。在这个例子中,琼斯先生必须购买产品(1,1,2,20)(注意产品(1)在清单中出现了两次)。对于这个例子,在他的限制条件下,琼斯先生的最低费用是(21.30)。请注意,用这种新的购物方式,琼斯先生可能无法购买琼斯夫人清单上的所有商品;在那种情况下,你的程序应该提醒琼斯先生。

输入
你的程序应该处理多个购物场景的数据。一个购物场景描述的第一行包含两个整数和;表示琼斯夫人清单上的商品数量(),表示超市里现有商品的总数()。下一行包含个整数),表示琼斯夫人清单上的商品列表(,)。然后是行,按照琼斯先生行进路线中出现的顺序表示超市里的商品。每一行包含一个整数和一个实数,分别表示一个商品标识和它的价格()。输入以表示结束。
输出
对于输入中的每个购物场景,你的程序应该产生一行输出,包含琼斯先生要支付的最低费用。如果对于这个场景不可能购买所有商品,打印单词‘Impossible’。费用必须以实数形式输出,保留两位小数,最后一位小数要四舍五入。输入不会包含舍入差异显著的测试用例。
输入示例1
4 8
1 1 2 20
2 0.29
1 0.30
20 0.15
1 1.00
5 0.05
2 10.00
20 20.00
20 10.00
2 5
1 2
3 1.00
4 1.00
2 0.01
1 1.00
2 1.50
2 3
1 2
2 0.05
1 10.00
1 3.00
0 0
输出示例1
21.30
2.50
Impossible
来源
2002年南美