#1323. 存钱罐

存钱罐

存钱罐

题目描述

小蓝现在想用钱买一个纪念品,他的钱存在一个存钱罐里面(如果想要把存钱罐里面的钱拿出来就必须打碎罐子),但是小蓝忘记记存钱罐里面到底存了多少钱,小蓝想要知道存钱罐里面最少有多少钱。

我们知道空存钱罐和当前存钱罐的重量,还有每种钱对应的价值和重量,请帮小蓝完成这个任务。

输入格式

第一行是 EE 和 FF,表示空罐和当前存钱罐的重量,1≤E≤F≤100001 \le E \le F \le 10000。

第二行有一个整数 NN(1≤N≤5001 \le N \le 500)表示硬币的种类。

接下来是 NN 行,每行两个数 PP 和 WW(1≤P≤500001 \le P \le 50000,1≤W≤100001 \le W \le 10000)。PP 表示硬币面值,WW 表示硬币重量。

输出格式

输出一个数,代表存钱罐最少的钱。如果结果不存在,输出 -1。

样例输入

10 110
2
1 1
30 50

样例输出

60

说明/提示

样例解释:空罐重 10,现在重 110,所以里面的硬币总重量是 110−10=100110 - 10 = 100。

有两种硬币:面值 1 重 1、面值 30 重 50。凑出总重量 100 的最省方案是放 2 枚面值 30 的硬币(重量 50+50=10050 + 50 = 100,价值 30+30=6030 + 30 = 60),所以输出 60。

每种硬币的数量不限,但必须恰好凑出总重量;凑不出来就输出 -1。