一个停车场有 $N$ 个停车位,编号从 $1$ 到 $N$。停车场每天早上清空,全天按以下方式运作:每当有车到达停车场时,管理员会检查是否有空闲的停车位。如果没有,车辆就在入口处等待,直到有停车位空出。如果有空闲的停车位,或者一旦有停车位空出,车辆就会停入该空位。如果有多个空闲的停车位,车辆将停在编号最小的那个车位。如果某辆车在等待时又有其他车辆到达,它们会按到达的先后顺序在入口处排队。随后,当有停车位空出时,队列中的第一辆车(即最早到达的那辆)会停入该车位。
停车费用(以美元计)为车辆重量(以千克计)乘以该停车位的特定费率。费用与车辆在停车场停留的时间长短无关。
停车场管理员知道今天会有 $M$ 辆车到来,并且他知道这些车辆到达和离开的顺序。请帮助他计算今天停车场总共能获得多少美元的收入。
题目描述
编写一个程序,给定停车位的特定费率、车辆的重量以及车辆到达和离开的顺序,计算停车场总共获得的美元收入。
数据范围
$1 \le N \le 100$ 停车位数量 $1 \le M \le 2,000$ 车辆数量 $1 \le R_s \le 100$ 停车位 $s$ 的费率(美元/千克) $1 \le W_k \le 10,000$ 车辆 $k$ 的重量(千克)
输入格式
程序必须从标准输入读取以下数据: 第一行包含两个整数 $N$ 和 $M$,用空格分隔。 接下来的 $N$ 行描述停车位的费率。其中第 $s$ 行包含一个整数 $R_s$,表示编号为 $s$ 的停车位的费率(美元/千克)。 接下来的 $M$ 行描述车辆的重量。车辆编号为 $1$ 到 $M$,顺序不固定。其中第 $k$ 行包含一个整数 $W_k$,表示编号为 $k$ 的车辆的重量(千克)。 接下来的 $2 \times M$ 行按时间顺序描述所有车辆的到达和离开情况。正整数 $i$ 表示编号为 $i$ 的车辆到达停车场。负整数 $-i$ 表示编号为 $i$ 的车辆离开停车场。没有车辆会在到达之前离开,且从 $1$ 到 $M$ 的所有车辆都会在该序列中恰好出现两次,一次到达,一次离开。此外,没有车辆会在停入车位前离开(即没有车辆会在队列中等待时离开)。
输出格式
程序必须向标准输出写入一行,包含一个整数:停车场管理员今天总共获得的美元收入。
子任务
对于总分 $40$ 分的测试用例,每辆到达的车辆总会有至少一个空闲的停车位。在这些情况下,车辆无需等待。
样例
输入 1
3 4 2 3 5 200 100 300 800 3 2 -3 1 4 -4 -2 -1
输出 1
5300
说明 1
编号为 $3$ 的车停在 $1$ 号车位,支付 $300 \times 2 = 600$ 美元。 编号为 $2$ 的车停在 $2$ 号车位,支付 $100 \times 3 = 300$ 美元。 编号为 $1$ 的车停在 $1$ 号车位(由编号为 $3$ 的车空出),支付 $200 \times 2 = 400$ 美元。 编号为 $4$ 的车停在 $3$ 号车位(最后一个剩余车位),支付 $800 \times 5 = 4,000$ 美元。
输入 2
2 4 5 2 100 500 1000 2000 3 1 2 4 -1 -3 -2 -4
输出 2
16200
说明 2
编号为 $3$ 的车停在 $1$ 号车位,支付 $1,000 \times 5 = 5,000$ 美元。 编号为 $1$ 的车停在 $2$ 号车位,支付 $100 \times 2 = 200$ 美元。 编号为 $2$ 的车到达,必须在入口处等待。 编号为 $4$ 的车到达,必须在编号为 $2$ 的车后在入口处等待。 当编号为 $1$ 的车离开其停车位时,编号为 $2$ 的车停入该车位,支付 $500 \times 2 = 1,000$ 美元。 当编号为 $3$ 的车离开其停车位时,编号为 $4$ 的车停入该车位,支付 $2,000 \times 5 = 10,000$ 美元。