#582. 打游戏(game)文件读写

打游戏(game)文件读写

样例下载

注意

本题提交程序中请使用文件输入输出操作,否则不得分。

题目描述

小 A 去打游戏。他买了 N 个游戏币,每个游戏币有一个点数 pip_i,表示用这个游戏币最多可以玩 pip_i 点的游戏。

游戏按顺序分为 K 关,第 i 关游戏需要消耗的点数为 xix_i

在闯关前,小 A 需要提前支付游戏币,每次支付只能使用 1 个游戏币,可以帮助他闯若干关。如果闯完某一关后,所支付游戏币的点数未使用完,但剩余点数又不足以完成下一关,则剩余点数被浪费。如果要继续闯关,则他需要再次支付 1 个游戏币。

小 A 自然希望游戏结束时,手里剩余的游戏币点数之和最大。

自然地,这个问题交给了你。

你只需要输出小 A 闯完 K 关游戏后,手里剩余游戏币的点数之和的最大值。如果无法全部闯关成功,输出 -1

输入格式

第一行:两个整数依次表示 N, K;

接下来 N 行:每行一个整数,依次表示第 i 个游戏币的点数 pip_i

接下来 K 行:每行一个整数,依次表示第 i 关游戏需要消耗的点数 xix_i

输出格式

一个整数,表示小 A 最多剩余的游戏币的点数。如果无法全部闯关成功,输出 -1

样例输入

3 5 
10 
20
15 
7
2
7 
5
6

样例输出

15

数据范围

30% 的数据:1N5,1K201 ≤ N ≤ 5, 1 ≤ K ≤ 20

100% 的数据:$1 ≤ N ≤ 16, 1 ≤ K ≤ 10^5, 1 ≤ p_i ≤ 10^8, 1 ≤ x_i ≤ 10^4$