#P9115. [IOI2009] Garage

[IOI2009] Garage

题目背景

IOI2009 D2T1

题目描述

一个停车场有 NN 个停车位,依次编号为 11NN。每天早上,停车场的所有停车位都是空的。当一辆车到达停车场时,服务员检查是否有空的停车位。如果没有,则这辆车将在入口处等待,直到有新的停车位。如果有,则这辆车将停在编号最小的空的停车位上。如果多辆车在入口处等待,则它们会按照到达的顺序排成队列,当出现空的停车位时,队列中的第一辆车(最早到达的车辆)将停在该停车位上。

每辆车的停车费是它的重量乘以对应停车位的特定比率,和它在停车场停了多久无关。

停车场管理员得知今天将有 MM 辆车前来停车,以及它们到达和离开的顺序。帮他计算今天的收入。

任务:编写一个程序,给定每个停车位的特定比率,每辆车的重量和所有车辆到达和离开的顺序,求出车库的总收入。

输入格式

第一行包含两个由空格隔开的整数 N,MN, M,分别表示停车位数和车辆数。

接下来 NN 行描述了停车位的收费率。其中第 ss 行包含一个整数 RsR_s,表示编号为 ss 的停车位每千克收费的价格。

接下来 MM 行描述了车辆的重量。车辆从 11MM 编号,其中第 kk 行包含一个整数 WkW_k,表示编号为 kk 的车辆的重量,单位千克。

接下来 2M2M 行描述了所有车辆到达和离开的时间顺序。一个正数 ii 表示编号为 ii 的车辆到达停车场。一个负数 i-i 表示编号为 ii 的车离开停车场。没有车辆会在到达之前离开停车场,且 1M1\sim M 每辆车会在序列中出现恰好两次,一次到达,一次离开。此外,没有车辆会在停入停车场之前离开,也就是说,不会有队列中的车辆离开。

输出格式

一行一个整数,表示停车场管理员今天的收入。

3 4
2
3
5
200
100
300
800
3
2
-3
1
4
-4
-2
-1

5300

2 4
5
2
100
500
1000
2000
3
1
2
4
-1
-3
-2
-4

16200

提示

样例解释

  • 样例 1:

    • 车辆 33 停在车位 11,支付 300×2=600300\times 2 = 600 美元。
    • 车辆 22 停在车位 22,支付 100×3=300100\times 3 = 300 美元。
    • 车辆 11 停在车位 11(车辆 33 空出的停车位),支付 200×2=400200\times 2 = 400 美元。
    • 车辆 44 停在车位 33,支付 800×5=4000800\times 5 = 4000 美元。
  • 样例 2:

    • 车辆 33 停在车位 11,支付 1000×5=50001000\times 5 = 5000 美元。
    • 车辆 11 停在车位 22,支付 100×2=200100\times 2 = 200 美元。
    • 车辆 22 到达并在入口处等待。
    • 车辆 44 到达并在入口处等待,排在车辆 22 之后。
    • 当车辆 11 离开时,车辆 22 停在空出的车位 22,支付 500×2=1000500\times 2 = 1000 美元。
    • 当车辆 33 离开时,车辆 44 停在空出的车位 11,支付 2000×5=100002000\times 5 = 10000 美元。

数据范围与约定

  • 对于 40%40\% 的数据,没有车辆会在停车场等待。
  • 对于 100%100\% 的数据,1N1001\leq N\leq 1001M20001\leq M\leq 20001Rs1001\leq R_s\leq 1001Wk1041\leq W_k\leq 10 ^ 4