Dotcpp  >  编程题库  >  极限跳跃
题目 2039:

极限跳跃

时间限制: 2s 内存限制: 192MB 提交: 58 解决: 27

题目描述

A在玩一个游戏:他在石砖路上放了一些石子,每堆石子都有一定的数量。他在出发点,想通过跳跃的方式获取石子。路上很长,长达10^9……

他可以选择一个长度,选取后,只能用那个长度进行连续跳跃,必须跳跃准确到达之后才能得到这些石子。

他共可以选取m(m<20)种长度。

请问他能获取石子的最大数量是多少?(n<=100000)

输入格式

第一个数是两个数字nm,表示石子的堆数和长度的种类

接下来n行,每行都有两个数,widi(wi<10000,di<10^9)表示石子的数量和位置。

接下来有m个数,表示他可以选取的长度。

输出格式

一个数,表示最大数量。

样例输入

15 6
13 5
13 55
30 8
6 1
7 89
1 4
55 88
33 89
21 315
11 644
99 11110
5 222
7 99
66 42
212 328
23 5 88 4 13 100

样例输出

309

提示

零基础同学可以先学习视频课程,包含C/C++、Python、百练、蓝桥杯辅导、算法数据结构等课程,提供视频讲解以及配套习题,还有老师答疑,点击这里了解课程详情
标签