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

极限跳跃

时间限制: 3s 内存限制: 192MB 提交: 56 解决: 26

题目描述

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教程单片机教程

视频教学见视频网课

标签