Problem:


Score : 800 points

Problem Statement

There are N rabbits on a number line.
The rabbits are conveniently numbered 1 through N.
The coordinate of the initial position of rabbit i is x_i.

The rabbits will now take exercise on the number line, by performing sets described below.
A set consists of M jumps. The j-th jump of a set is performed by rabbit a_j (2≤a_j≤N-1).
For this jump, either rabbit a_j-1 or rabbit a_j+1 is chosen with equal probability (let the chosen rabbit be rabbit x), then rabbit a_j will jump to the symmetric point of its current position with respect to rabbit x.

The rabbits will perform K sets in succession.
For each rabbit, find the expected value of the coordinate of its eventual position after K sets are performed.

Constraints

3≤N≤10^5

x_i is an integer.

|x_i|≤10^9

1≤M≤10^5

2≤a_j≤N-1

1≤K≤10^{18}

Input

The input is given from Standard Input in the following format:

N
x_1 x_2 ... x_N
M K
a_1 a_2 ... a_M

Output

Print N lines.
The i-th line should contain the expected value of the coordinate of the eventual position of rabbit i after K sets are performed.
The output is considered correct if the absolute or relative error is at most 10^{-9}.

Sample Input 1

3
-1 0 2
1 1
2

Sample Output 1

-1.0
1.0
2.0

Rabbit 2 will perform the jump.
If rabbit 1 is chosen, the coordinate of the destination will be -2.
If rabbit 3 is chosen, the coordinate of the destination will be 4.
Thus, the expected value of the coordinate of the eventual position of rabbit 2 is 0.5×(-2)+0.5×4=1.0.

Sample Input 2

3
1 -1 1
2 2
2 2

Sample Output 2

1.0
-1.0
1.0

x_i may not be distinct.

Sample Input 3

5
0 1 3 6 10
3 10
2 3 4

Sample Output 3

0.0
3.0
7.0
8.0
10.0



Sample input:
3
-1 0 2
1 1
2


Sample output:
-1.0
1.0
2.0

Submission status: Runtime Error

Solution code:
import copy
import numpy as np
n = int(input())
x = list(map(int,input().split()))
m,k = map(int,input().split())
a = list(map(int,input().split()))
b = []
x2 = []
c = []
for i in range(1,n):
  b.append(i-1)
  x2.append(x[i]-x[i-1])
for i in range(m):
  to = a[i]-1
  b[to],b[to-1] = b[to-1],b[to]
bai = np.zeros((n-1,n-1))
for i in range(n-1):
  xx = b[i]
  bai[xx,i] = 1
bai = np.mat(bai)
bai = bai**k
x2 = np.dot(x2,bai)
x2 = np.array(x2)
s = x[0]
print(s)
for i in x2[0]:
  s += i
  print(s)

Submission status: Runtime Error

Solution code:
def main():
    pass

if __name__ == '__main__':
    main()

N = int(raw_input())
x = map(float, raw_input().split(" "))
M, K = map(float, raw_input().split(" "))
a = map(float, raw_input().split(" "))

for k in range(K):
    for rab in a:
        x[rab-1] = x[rab-2] + x[rab] - x[rab-1]

for rab in x:
    print rab

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(int, raw_input().split())
a_list = map(int, raw_input().split())


for k in range(K):
    for a in a_list:
        x_vec[a] = x_vec[a-1] + x_vec[a+1] - x_vec[a]

for i in range(1, N+1):
    print x_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(int, raw_input().split())
a_list = map(int, raw_input().split())


for k in range(K):
    y_vec = x_vec.copy()
    for a in a_list:
        y_vec[a] = y_vec[a-1] + y_vec[a+1] - y_vec[a]
    x_vec = y_vec.copy()

for i in range(1, N+1):
    print x_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(int, raw_input().split())
a_list = map(int, raw_input().split())


for k in range(K):
    y_vec = x_vec.copy()
    for a in a_list:
        y_vec[a] = y_vec[a-1] + y_vec[a+1] - y_vec[a]
    if np.array_equal(x_vec, y_vec):
        pass
    else:
        x_vec = y_vec.copy()

for i in range(1, N+1):
    print x_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(int, raw_input().split())
a_list = map(int, raw_input().split())


for k in range(K):
    y_vec = x_vec.copy()
    for a in a_list:
        y_vec[a] = y_vec[a-1] + y_vec[a+1] - y_vec[a]
    if np.array_equal(x_vec, y_vec):
        break
    else:
        x_vec = y_vec.copy()

for i in range(1, N+1):
    print x_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(int, raw_input().split())
a_list = map(int, raw_input().split())


y_vec = x_vec.copy()
for a in a_list:
    y_vec[a] = y_vec[a-1] + y_vec[a+1] - y_vec[a]
if np.array_equal(x_vec, y_vec):
    break
else:
    x_vec = y_vec.copy()

for i in range(1, N+1):
    print x_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(int, raw_input().split())
a_list = map(int, raw_input().split())


y_vec = x_vec.copy()
for a in a_list:
    y_vec[a] = y_vec[a-1] + y_vec[a+1] - y_vec[a]
if np.array_equal(x_vec, y_vec):
    break
else:
    x_vec = y_vec

for i in range(1, N+1):
    print y_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()))
M, K = map(long, raw_input().split())
a_list = map(int, raw_input().split())


for k in range(K):
    y_vec = x_vec.copy()
    for a in a_list:
        y_vec[a] = y_vec[a-1] + y_vec[a+1] - y_vec[a]
    if np.array_equal(x_vec, y_vec):
        break
    else:
        x_vec = y_vec

for i in range(1, N+1):
    print y_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(long, raw_input().split())
a_list = map(int, raw_input().split())


for k in range(K):
    y_vec = x_vec.copy()
    for a in a_list:
        y_vec[a] = y_vec[a-1] + y_vec[a+1] - y_vec[a]
    if np.array_equal(x_vec, y_vec):
        break
    else:
        x_vec = y_vec

for i in range(1, N+1):
    print y_vec[i]

Submission status: Runtime Error

Solution code:
import numpy as np
N = int(raw_input())
x_vec = np.array([0] + map(int, raw_input().split()), dtype='double')
M, K = map(int, raw_input().split())
a_list = map(int, raw_input().split())

for k in range(K):
    for a in a_list:
        x_vec[a] = x_vec[a-1] + x_vec[a+1] - x_vec[a]

for i in range(1, N+1):
    print x_vec[i]

Submission status: Runtime Error

Solution code:
n = int(raw_input())
x = map(float, raw_input().split())
m, k = map(int, raw_input().split())
a = map(int, raw_input().split())

for i in range(k):
    for j in a:
        x[j-1] = ((2 * x[j] - x[j-1]) + (2 * x[j-2] - x[j-1])) / 2

for i in x:
    print i