问题 5346 --负无穷大(neginf)

5346: 负无穷大(neginf)

时间限制: 2 Sec  内存限制: 128 MB
提交: 10  解决: 3
[提交][状态][命题人:]

题目描述

你有一个长度为 n 的数组 a[1],a[2], … ,a[n] 和一个整数 k 。要执行 n 次操作,每次操作会将 a[p[i]] 修改为 −10^100 ,保证每次修改的位置都是不同的。

在每次操作之前,你想知道所有的区间里面,权值和与 k 最接近的是多少。也就是你要找到一个区间 [i,j](1≤i≤j≤n) ,使得 |a[l]+a[l+1]+a[l+2]+..+a[r]-k| 最小,输出这个最小的绝对值。

输入

第一行两个整数 n,k。
接下来一行 n 个整数 a[1],a[2],...,a[n] 。
接下来一行 n 个整数 p[1],p[2],...,p[n] 。

输出

输出 n 行,每行一个数表示答案。
样例输入
Copy
5 5
1 2 3 4 5
1 4 5 2 3
样例输出
Copy
0
0
0
0
2

提示

数据规模
共 10 个测试点。
测试点 1 满足 n≤100 。
测试点 2,3 满足 n≤1000 。
测试点 4,5 满足 p[i] 随机生成。
测试点 6,7 满足 a[i]≥0 。
对于所有数据,满足 1≤n≤10^5, |k|≤10^9, |a[i]|≤10000 。

来源

[提交][状态]