题目描述
小 Y 有一个长度为 n 的整数序列 A,序列 A 的第 i 个整数为 Ai。 小 Y 还拥有一个序列 B,序列 B 的第 j 个整数为 Bj,且 B 为整数 1 ∼ n 的一个 排列。利用序列 B,小 Y 会按顺序进行 n 次操作。在第 j 次操作中,小 Y 会将 A 中 的第 Bj 个整数 ABj 封印。初始时 A 中的所有整数均未被封印。 小 Y 提前告诉了你一个整数 k,他希望在他每一次操作前,你能够帮助他找到 A 中一个不包含已被封印的整数的连续区间,满足该区间内所有整数的和最接近 k。形 式化地,在每一次操作前,你需要找到一个区间 [a, b](1 ≤ a ≤ b ≤ n),满足对于任意 t ∈ [a, b],At 均未被封印,且 |S(a, b) − k| 尽量小(其中 S(a, b) = ∑b i=a Ai)。为了方便, 每次你只需要将 |S(a, b) − k| 的最小值告诉小 Y。
输入格式
从文件 array.in 中读入数据。 输入的第一行包含两个用单个空格分隔的正整数 n, k,分别表示序列 A 的长度以 及小 Y 告知你的整数。 输入的第二行包含 n 个用单个空格分隔的整数,其中第 i 个整数表示 Ai。 输入的第三行包含 n 个用单个空格分隔的正整数,其中第 j 个正整数表示 Bj。输 入保证该行给出的数构成了 1 ∼ n 的一个排列。
样例输入
4 5
1 2 3 4
2 4 3 1
输出
0
1
2
4