-
Notifications
You must be signed in to change notification settings - Fork 0
/
ae_numba.py
40 lines (32 loc) · 922 Bytes
/
ae_numba.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import sys
import numpy as np
from numba import njit
input = sys.stdin.readline
@njit('int32[:, :]()', cache=True)
def fill_grundy():
grundy = np.zeros((51, 1500), dtype=np.int32)
for i in range(51):
for j in range(1440):
exist = np.zeros(800, dtype=np.bool8)
if i > 0:
exist[grundy[i - 1][j + i]] = True
for k in range(1, j // 2 + 1):
exist[grundy[i][j - k]] = True
g = 0
while True:
if not exist[g]:
break
g += 1
grundy[i][j] = g
return grundy[:, : 51]
def main():
grundy = fill_grundy()
_ = int(input())
w = list(map(int, input().split()))
b = list(map(int, input().split()))
g = 0
for i, j in zip(w, b):
g ^= grundy[i, j]
print('First' if g > 0 else 'Second')
if __name__ == "__main__":
main()