There are N towers of stones, numbered from 0 to N−1. The K-th tower contains A[K] stones. In one turn, you can move a single stone from tower K to one of towers K−2, K−1, K+1 or K+2. You can move a stone only to existing towers. For example, from tower 0 you can move a stone only to tower 1 or 2, and from tower 1 you can move a stone only to towers 0, 2 and 3.
What is the minimum number of turns needed to rearrange the stones such that on the K-th tower there will be B[K] stones?
Write a function
def solution(A, B)
that, given two arrays A and B of N integers each, representing the initial and final arrangements of the stones, returns the minimum number of turns needed to rearrange the stones. Since the answer can be very large, provide it modulo 109 + 7 (1,000,000,007). If rearrangement is impossible, your function should return −1.
Examples
1. Given A = [1, 1, 2, 4, 3], B = [2, 2, 2, 3, 2], your function should return 3. You can move one stone from tower 3 to tower 1 using one turn and one from tower 4 to tower 0 using two turns (4 → 2 → 0).
2. Given A = [0, 0, 2, 1, 8, 8, 2, 0], B = [8, 5, 2, 4, 0, 0, 0, 2], your function should return 31. One possible sequence of moves is as follows:
- move 8 stones from tower 4 to 0 (16 turns),
- move 8 stones from tower 5 to 3 (8 turns),
- move 5 stones from tower 3 to 1 (5 turns),
- move 2 stones from tower 6 to 7 (2 turns).
3. Given A = [109, 109, 109, 0, 0, 0], B = [0, 0, 0, 109, 109, 109], your function should return 999999972. Possible sequence of moves:
- move all stones from tower 0 to 5 (3*109 turns),
- move all stones from tower 1 to 3 (109 turns),
- move all stones from tower 2 to 4 (109 turns).
The total number of turns is 5*109, so the answer is 5*109 mod (109+7) = 999999972.
4. Given A = [2] and B = [1] your function should return −1.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- arrays A and B have the same length N;
- each element of arrays A and B is an integer within the range [0..1,000,000,000].
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
re
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i - 1] < 0
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i - 1] < 0:
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i - 1] < 0:
diff[i] =
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i - 1] < 0:
diff[i] = max(diff[i] + diff[i - 1], 0)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i - 1] < 0:
diff[i] = max(diff[i] + diff[i - 1], 0)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
else:
diff
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min()
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if not diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff
return result
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff
return result % (10 ** 9 + 7)
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 36, in solution diff[i + 2] += diff TypeError: unsupported operand type(s) for +=: 'int' and 'list'
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 36, in solution diff[i + 2] += diff TypeError: unsupported operand type(s) for +=: 'int' and 'list'
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 30, in solution if diff[i + 1] > 0: IndexError: list index out of range
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
return result % (10 ** 9 + 7)
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 30, in solution if diff[i + 1] > 0: IndexError: list index out of range
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 30, in solution if diff[i + 1] > 0: IndexError: list index out of range
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
p
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
return result % (10 ** 9 + 7)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
print(diff)
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
return result % (10 ** 9 + 7)
[-1, -1, 0, 1, 1] [-1, -1, -1, 1, 1] [-1, -1, -1, 0, 1] [-1, -1, -1, 0, 0] [-1, -1, -1, 0, 0]
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 31, in solution if diff[i + 1] > 0: IndexError: list index out of rangestdout:
[-8, -5, 0, -3, 8, 8, 2, -2] [-8, -5, -8, -3, 8, 8, 2, -2] [-8, -5, -8, -8, 8, 8, 2, -2] [-8, -5, -8, -8, 0, 8, 2, -2] [-8, -5, -8, -8, 0, 0, 2, -2] [-8, -5, -8, -8, 0, 0, 2, -2] [-8, -5, -8, -8, 0, 0, 2, -2] [-8, -5, -8, -8, 0, 0, 0, -2]
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 31, in solution if diff[i + 1] > 0: IndexError: list index out of rangestdout:
[1000000000, 1000000000, 1000000000, -1000000000, -1000000000, -1000000000] [1000000000, 1000000000, 2000000000, -1000000000, -1000000000, -1000000000] [1000000000, 1000000000, 2000000000, 0, -1000000000, -1000000000] [1000000000, 1000000000, 2000000000, 0, 1000000000, -1000000000] [1000000000, 1000000000, 2000000000, 0, 1000000000, -1000000000] [1000000000, 1000000000, 2000000000, 0, 0, -1000000000]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
print(diff)
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
d
return result % (10 ** 9 + 7)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
print(diff)
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
diff[i + 1] = max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
diff[i] = 0
return result % (10 ** 9 + 7)
[-1, -1, 0, 1, 1] [0, -1, -1, 1, 1] [0, 0, -1, 0, 1] [0, 0, 0, 0, 0] [0, 0, 0, 0, 0]
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 31, in solution if diff[i + 1] > 0: IndexError: list index out of rangestdout:
[-8, -5, 0, -3, 8, 8, 2, -2] [0, -5, -8, -3, 8, 8, 2, -2] [0, 0, -8, -8, 8, 8, 2, -2] [0, 0, 0, -8, 0, 8, 2, -2] [0, 0, 0, 0, 0, 0, 2, -2] [0, 0, 0, 0, 0, 0, 2, -2] [0, 0, 0, 0, 0, 0, 2, -2] [0, 0, 0, 0, 0, 0, 0, -2]
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 101, in main result = solution( A, B ) File "/tmp/solution.py", line 31, in solution if diff[i + 1] > 0: IndexError: list index out of rangestdout:
[1000000000, 1000000000, 1000000000, -1000000000, -1000000000, -1000000000] [0, 1000000000, 2000000000, -1000000000, -1000000000, -1000000000] [0, 0, 2000000000, 0, -1000000000, -1000000000] [0, 0, 0, 0, 1000000000, -1000000000] [0, 0, 0, 0, 1000000000, -1000000000] [0, 0, 0, 0, 0, -1000000000]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
print(diff)
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i] = max(diff[i] + diff[i + 1], 0)
diff[i + 1] = min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i] = min(diff[i] + diff[i + 1], 0)
= max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
diff[i] = 0
return result % (10 ** 9 + 7)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
print(diff)
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i], diff[i + 1] = max(diff[i] + diff[i + 1], 0), min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i], diff[i + 1] = min(diff[i] + diff[i + 1], 0), max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
diff[i] = 0
return result % (10 ** 9 + 7)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
print(diff)
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i], diff[i + 1] = max(diff[i] + diff[i + 1], 0), min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i], diff[i + 1] = min(diff[i] + diff[i + 1], 0), max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
diff[i] = 0
return result % (10 ** 9 + 7)
[-1, -1, 0, 1, 1] [0, -1, -1, 1, 1] [0, 0, -1, 0, 1] [0, 0, 0, 0, 0] [0, 0, 0, 0, 0]
[-8, -5, 0, -3, 8, 8, 2, -2] [0, -5, -8, -3, 8, 8, 2, -2] [0, 0, -8, -8, 8, 8, 2, -2] [0, 0, 0, -8, 0, 8, 2, -2] [0, 0, 0, 0, 0, 0, 2, -2] [0, 0, 0, 0, 0, 0, 2, -2] [0, 0, 0, 0, 0, 0, 2, -2] [0, 0, 0, 0, 0, 0, 0, 0]
[1000000000, 1000000000, 1000000000, -1000000000, -1000000000, -1000000000] [0, 1000000000, 2000000000, -1000000000, -1000000000, -1000000000] [0, 0, 2000000000, 0, -1000000000, -1000000000] [0, 0, 0, 0, 1000000000, -1000000000] [0, 0, 0, 0, 1000000000, -1000000000] [0, 0, 0, 0, 0, 0]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i], diff[i + 1] = max(diff[i] + diff[i + 1], 0), min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i], diff[i + 1] = min(diff[i] + diff[i + 1], 0), max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
diff[i] = 0
return result % (10 ** 9 + 7)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i], diff[i + 1] = max(diff[i] + diff[i + 1], 0), min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i], diff[i + 1] = min(diff[i] + diff[i + 1], 0), max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
diff[i] = 0
return result % (10 ** 9 + 7)
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(A, B):
# write your code in Python 3.6
if sum(A) != sum(B):
return -1
diff = []
for i in range(len(A)):
diff.append(A[i] - B[i])
result = 0
for i in range(len(diff)):
if diff[i] == 0:
continue
else:
result += abs(diff[i])
if diff[i] > 0:
if diff[i + 1] < 0:
diff[i], diff[i + 1] = max(diff[i] + diff[i + 1], 0), min(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
else:
if diff[i + 1] > 0:
diff[i], diff[i + 1] = min(diff[i] + diff[i + 1], 0), max(diff[i] + diff[i + 1], 0)
if diff[i]:
diff[i + 2] += diff[i]
else:
diff[i + 2] += diff[i]
diff[i] = 0
return result % (10 ** 9 + 7)
The solution obtained perfect score.