快快乐乐剪羊毛
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

干(肝)完了许多东西之后,你发现你的羊场还没剪羊毛,于是你准备去羊场剪羊毛。
羊场的设计是由 n 块长度相等宽度不定的矩形草皮从左至右依次拼接而成的,第 i 块草皮的宽度为 w_i,其富含的营养价值为 v_iv_i 可以为负数,负数代表不仅没有营养还危害健康。
第 1 块草皮所在的区间为 (0,w_1],则第 2 块草皮所在区间为 (w_1,w_1+w_2],第 3 块草皮所在区间为 (w_1+w_2,w_1+w_2+w_3] 以此类推......
你一共 m 只绵羊,第 i 只绵羊在点 x_i 所在的竖线上。
绵羊的羊毛的价值等于所在草皮富含的营养价值,你觉得现在的布局不能让你最大程度上的薅羊毛,但是绵羊们都不愿意移动,既然你不动,那我就动这个世界,你现在可以水平向左或向右任意挪动整个羊场的草皮,若绵羊脚下没有草皮,则羊毛的价值为 0
现在你想计算你所能得到的羊毛价值之和的取值有多少种。

输入描述:

第一行 两个正整数 \mathit n\mathit m,表示草皮的数量和绵羊的数量
接下来 一行 \mathit n 个由空格隔开的正整数w_i,表示第 \mathit i 块草皮的宽度。
接下来 一行 \mathit n 个由空格隔开的整数 v_i,表示第 \mathit i 块草皮的营养价值。
再接下来 一行 m 个由空格隔开的非负整数 x_i,表示第 i 只绵羊所在的横坐标为 x_i
1\leq n*m\leq10^5
1\leq w_i\leq10^5
-10^9\leq v_i\leq10^9
0\leq x_i<\sum_{i=1}^nw_i

输出描述:

一个正整数,表示羊毛价值之和的取值的种数。
示例1

输入

复制
3 3
1 2 3
2 -1 3
2 3 4

输出

复制
7

说明


价值和去重排序后有 0,1,2,3,5,6,9
所以一共有 7 种。

备注: