小塔正在一张有向但定连通的图上玩游戏。这张图包含n个点,第i个点的权值为a,当小美从i移动到 Nexti时,游戏规则如下:
如果aNeati>ai,小美的金币将增加x;
如果aNexti≤ai,小美的金币将增加y。
小塔会提出q次询问,每个询问从某个点u出发,移动不超过k步,最多能获得多少金币。
第一行输入四个整数n,q,x,y(1≤n,q≤2×105,−106≤x,y≤106)代表图上点的数量、询问的次数、规则中金币的增加量。 第二行输入n个整数Next1,Nextz,...,Nextn(1≤Nexti≤n)表示第i个节点下一步的位置。 第三行输入n个整数a1,a2,...,an(1≤ai≤106),表示第i个节点的权值。 此后q行,每行输入两个整数u,k(1≤u≤n,1≤k≤109) 代表一次询问的起始点和步数限制。
对于每一次询问,在一行上输出一个整数,代表最多能获得的金币数量。
输入
4 5 -2 3
2 3 4 1
5 10 3 2
1 1
1 2
1 4
2 4
2 7
输出
0
1
4
6
8
说明
该样例如下图所示:
●对于第一次询问,走一步会扣除2金币,但是可以选择站在原地不走; ●对于第二次询问,走一步时金币数量减至−2,走两步金币数量变更为−2+3=1。
输入
4 4 2 -1
2 3 1 4
1 2 3 1000000
1 3
3 3
2 2
4 1000000
输出
4
3
扫码备注加群即可,期待您的到来~
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.